Специальная строка LocalDate

Георгиос:

Из следующей строки, я хочу, чтобы получить LocalDate или LocalDateTime.

1 января 2019 12:00:00 AM

Я уже пробовал следующий код, но я получаю следующее сообщение об ошибке:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d, yyyy hh:mm:ss a"); // also with dd
formatter = formatter.withLocale(Locale.GERMAN);
LocalDateTime localDateTime = LocalDateTime.parse(stringDate, formatter);
LocalDate localDate = LocalDate.parse(stringDate, formatter);
  • Exception in thread "main" java.time.format.DateTimeParseException: Text 'Jan 1, 2019 12:00:00 AM' could not be parsed at index 0

То, как я хотел бы иметь дату, в конце концов, будет как

  • 01/01/2019. LOCALDATE
  • 01/01/2019. 12:00 localdateti в (24h)

Является ли это вообще возможно? Будет вместо использования регулярных выражений излишества?

Томас Pötzsch:

Есть несколько проблем с вашим кодом, но я предложу рабочее решение здесь:

  1. HHНастал час в день, а не час 0-12 (что hh)
  2. Вы должны использовать DateTimeFormatterBuilder
  3. Вы должны использовать правильную локаль, вероятно , GERMANYвместоGERMAN
  4. название месяца представляется в виде L, а не какM
  5. немецкий локали использует vorm.и nachm.вместо AMи PM-> быстрое решение заменить термины

Собираем все вместе оставляет нас с этим:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;

class Scratch {

    public static void main(String[] args) {
        String stringDate = "Jan 1, 2019 11:00:00 PM";
        stringDate = stringDate.replace("AM", "vorm.");
        stringDate = stringDate.replace("PM", "nachm.");
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendPattern("LLL d, yyyy hh:mm:ss a")
                .toFormatter(Locale.GERMANY);
        LocalDateTime localDateTime = LocalDateTime.parse(stringDate, formatter);
        LocalDate localDate = LocalDate.parse(stringDate, formatter);
    }

}

Если кто -то имеет другой подход к обработке AM/ vorm.-dilemma, я был бы рад видеть его!

рекомендация

отhttp://43.154.161.224:23101/article/api/json?id=333224&siteId=1