Как преобразовать дд / мм / гггг ЧЧ: мм: сс в смещение времени - java - PullRequest
2 голосов
/ 05 марта 2020

Я обновился до:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern ("dd/MM/yyyy HH:mm:ss");
org.threeten.bp.LocalDateTime _date = org.threeten.bp.LocalDateTime.parse ("10/19/2020 18:00:47", dtf);

и получил: 2020-10-19T18: 00: 47, но у меня все еще нет выхода со стандартом: 2020-10-19T18: 00: 47.868 -03: 00

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Ваш DateTimeFormatter имеет ("дд / мм / гггг ЧЧ: мм: сс"), но вы использовали "19.10.2020 18:00:47". Месяц не может быть 19.

Измените ввод на «19/10/2020 18:00:47», и он должен работать.

org.threeten.bp.format.DateTimeFormatter dtf = org.threeten.bp.format.DateTimeFormatter.ofPattern ("dd/MM/yyyy HH:mm:ss");
org.threeten.bp.LocalDateTime _date = org.threeten.bp.LocalDateTime.parse("19/10/2020 18:00:47", dtf);
System.out.println(_date);
0 голосов
/ 07 марта 2020

Ранее принятый ответ пользователя 3197884 является правильным и информативным (+1). Я не чувствовал, что он полностью ответил на заданный вопрос, поэтому я хотел внести преобразование в org.threeten.bp.OffsetDateTime.

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern ("MM/dd/yyyy HH:mm:ss");
    OffsetDateTime date = LocalDateTime.parse("10/19/2020 18:00:47", dtf)
            .atZone(ZoneId.of("America/Argentina/Buenos_Aires"))
            .toOffsetDateTime();
    System.out.println(date);

Вывод - это то, что вы просили:

2020-10-19T18: 00: 47-03: 00

Поскольку в вашей строке нет смещения или часового пояса, мы должны предоставить смещение другим способом. Точно, что является лучшим способом в вашей конкретной ситуации, я не осмелюсь сказать, но очень распространенным хорошим способом является предоставление часового пояса, который предполагался для строки. Я только что выбрал один, вместо этого вставьте свой собственный часовой пояс.

Вместо замены 10 и 19 в строке, которую я поменял dd и MM в шаблоне формата. Очевидно, что либо работает.

...