Как преобразовать 2019-03-26T04: 31: 40-05: 00 как строку в метку времени в Java? - PullRequest
2 голосов
/ 26 марта 2019

Я хочу изменить свое время, полученное с сервера, и сохранить его в базе данных, используя следующий формат - «25-MAR-19 01.23.42.121000000 AM»

Как я могу это сделать с помощью Java?

Попробовал следующий код, который не помог

import java.sql.Date;
import java.time;
public class MyClass {
    public static void main(String args[]) {
        final String selectedStart = "2019-03-26T04:31:40-05:00";
        final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss-XXX'");
        final LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);
    }
}

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Я не совсем понимаю ваш вопрос, но если вам нужна только часть даты, вы можете использовать ответ Ole.V.V или просто использовать:

LocalDate d = LocalDate.parse(selectedStart.split("T")[0]);

Редактировать

OffsetDateTime odt = OffsetDateTime.parse(selectedStart);
String str = odt.format(DateTimeFormatter.ofPattern("dd-MMM-uuuu hh.mm.ss.SSSSS a"));
3 голосов
/ 26 марта 2019

Не определяйте свой собственный форматер.Используйте встроенный DateTimeFormatter.ISO_OFFSET_DATE_TIME.

    final String selectedStart = "2019-03-26T04:31:40-05:00";
    final LocalDate parsedDate = LocalDate.parse(selectedStart, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    System.out.println(parsedDate);

2019-03-26

Что пошло не так в вашем коде?

Два символа в строке шаблона формата неверны:

  1. Смещение составляет -05:00, минус является его частью (это могло бы быть + вместоположительное смещение UTC).Поэтому удалите его из шаблона формата.
  2. Одинарные кавычки (апострофы) могут быть установлены вокруг буквальных частей, как вы делаете правильно в 'T'.Вы не можете иметь одинарные одинарные кавычки, как в конце строки шаблона формата.Просто удалите это тоже.

Дополнительные советы

  • LocalDate - неправильный класс для использования, когда вы хотите сохранить дату ивремя суток в вашу базу данных.LocalDate содержит дату без времени суток.Вы, вероятно, хотите OffsetDateTime.
  • Не обращайте внимания на формат при сохранении в вашей базе данных.Просто передайте объект datetime (например, OffsetDateTime) своему драйверу JDBC или реализации JPA и позвольте ему позаботиться об остальном.
...