Как преобразовать строку 2019-03-29T10: 45-05: 00 [Америка / Чикаго] в локальную дату? - PullRequest
0 голосов
/ 02 марта 2019
selectedStart = "2019-03-29T10:45-05:00[America/Chicago]";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);

Я получаю selectedStart строку из строки таблицы и пытаюсь преобразовать ее в LocalDate, но получаю ошибку:

Text '2019-03-29T10: 45-05:00 [Америка / Чикаго] 'не удалось проанализировать, найден неразобранный текст с индексом 10

Я ТОЛЬКО хочу, чтобы дата в формате yyyy-MM-dd НЕ хотела получать минуты, секунды, часовой пояс и т. Д....

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

ZonedDateTime.parse( … ).toLocalDate

Ваша входная строка имеет стандартный формат ISO 8601, но расширена для добавления имени часового пояса в квадратных скобках.Этот расширенный формат используется по умолчанию в классе ZonedDateTime.

ZonedDateTime.parse( "2019-03-29T10:45-05:00[America/Chicago]" ) 

Из этого извлеките LocalDate, если вам нужна только дата без времени дня и без часового пояса.

LocalDate ld = 
    ZonedDateTime.parse( "2019-03-29T10:45-05:00[America/Chicago]" )
                 .toLocalDate() ;
0 голосов
/ 02 марта 2019

Этого должно быть достаточно.Обратите внимание, что я использовал полную дату шаблон для первого преобразования, которое необходимо (parse выдаст DateTimeParseException).

final String selectedStart = "2019-03-29T10:45-05:00[America/Chicago]";
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']'");
final LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);
...