Преобразование метки времени 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.

Другие вопросы по тегам