2017-01-05 15 views
0

Мне очень жаль, если это было задано раньше, я попытался найти что-то, что отвечает на мои вопросы, но не может найти ничего.Как сохранить временную метку с смещением часовой пояс UTC в Java 6 без изменения чего-либо?

Проблема заключается в следующем: Предположим, у меня есть строка, которая выглядит так:> 2017-01-05-04: 44: 43-06: 00 (формат: yyyy-MM-dd-hh: mm: ss +/- UTC) Теперь моя цель - сохранить его, как и в базе данных Oracle, включая смещение (как я понимаю, мне нужно определить столбец как TIMESTAMP WITH TIME ZONE).

Итак, как мне взять захват временной метки со смещением в объект даты и времени Java? Я не хочу конвертировать время в UTC, я просто хочу сохранить его как есть и сохранить его в БД.

Обратите внимание, что мы на Java 6, поэтому я не могу использовать пакет java.time, и я не могу использовать Joda Time. Поэтому любое решение за пределами этого было бы действительно оценено.

Спасибо.

+0

Вам действительно нужно использовать дату/время в Java, или вы просто передаете ее в базу данных - в этом случае вы можете передать строку и преобразовать ее в БД? –

+0

@AlexPoole Да, это было бы моим последним прибежищем. Но в настоящее время в этом поле уже много кода, определяемого как Date на Java, и я искал решение, которое позволит избежать многого рефакторинга кода, если я сейчас преобразую его в String. Надеюсь, это имеет смысл. –

ответ

1

См. Проект ThreeTen-Backport для обратного порта большей части функций java.time для Java 6 и 7 (java.time встроен в Java 8 и более поздние версии).

Проект Joda-Time теперь находится в режиме обслуживания, хотя активно поддерживается. Спонсоры советуют перейти на классы java.time.

Замените этот дефис в середине строки ввода T в соответствии со стандартами ISO 8601. Эти стандартные форматы используются по умолчанию в классах java.time для синтаксического анализа и формирования строковых представлений значений даты и времени.

OffsetDateTime odt = OffsetDateTime.parse("2017-01-05T04:44:43-06:00"); 

Да, ваши вопросы являются дубликатами. Пожалуйста, поиск переполнения стека для существующих ответы на все ваши вопросы:

  • Backport из java.time, ThreeTen-Backport
  • PARSING строки, содержащие смещения, из-UTC, OffsetDateTime класса
  • обмена данными даты и времени с базами данных и, в частности, с Oracle, JDBC 4.2 для непосредственного обмена объектами java.time или с вызовом новых методов, добавленных в старые классы для преобразования в/из java.time в java.sql.Timestamp, или же на pre-Java-8 конвертировать в Timestamp числа отсчета от эпохи.
  • Изучение того, насколько плохи старые устаревшие классы времени и даты, и вы абсолютно должны пойти на поводу добавления библиотеки java.time backport в свой проект.

Совет: не выполнять поиск с веб-сайта переполнения стека. Их поисковая система предвзята к Вопросам, в то время как вы хотите искать ответы. Используйте тег site:stackoverflow.com в DuckDuckGo, Google или Bing.

 Смежные вопросы

  • Нет связанных вопросов^_^