Преобразование метки времени sql в java OffsetDateTime
Мне нужно преобразовать некоторые временные метки в
OffsetDateTime
в java. Например, у меня такое время:
2020-07-31 13:15:00.000000000 -03:00
Должен ли я использовать
SimpleDateFormat
для форматирования этого или некоторых других более простых помощников?
1 ответ
Вам нужно использовать
DateTimeFormatter
(API синтаксического анализа и форматирования для современных классов даты и времени), как показано ниже:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
OffsetDateTime odt = OffsetDateTime.parse("2020-07-31 13:15:00.000000000 -03:00",
DateTimeFormatter.ofPattern("u-M-d H:m:s.n ZZZZZ"));
System.out.println(odt);
}
}
Вывод:
2020-07-31T13:15-03:00
Проверьте документацию DateTimeFormatter
для получения более подробной информации об этом. Вы также можете проверить Trail:DateTime, чтобы узнать больше о современном API даты и времени.
Заметка:
java.util
классы даты и времени устарели и подвержены ошибкам, как и их API форматирования,
SimpleDateFormat
. Вам следует полностью прекратить их использование. Более того,
OffsetDateTime
является частью современного API даты и времени и
SimpleDateFormat
не вяжется с этим.
Если вы делаете это для своего проекта Android, а ваш уровень API Android по-прежнему не соответствует Java-8, проверьте API-интерфейсы Java 8+, доступные через десугаринг, и Как использовать ThreeTenABP в Android Project.