Преобразовать строку в объект DateTime в указанном формате c (например, без даты) - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно конвертировать String во время без даты. Я использовал SimpleDateFormat , и это сработало. Но мне нужно от Localdatetime in java.

String str = "10:30:20 PM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);

Но это выдает мне эту ошибку:

Исключение в потоке "main" java .time.format.DateTimeParseException: текст '10: 30: 20 PM 'не может быть проанализирован: невозможно получить LocalDateTime из TemporalAccessor: {}, ISO разрешено до 22:30:20 типа java .time. format.Parsed

Ответы [ 2 ]

3 голосов
/ 09 апреля 2020

Вы можете использовать Locale с вашим DateTimeFormatter -

String str = "10:30:20 PM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a",Locale.ENGLISH);
LocalTime time = LocalTime.parse(str, formatter);
System.out.println(time);

И также обратите внимание, что вы должны использовать LocalTime.parse() здесь, так как ваша строка в дате не содержит части даты.

2 голосов
/ 09 апреля 2020

Вам нужно LocalTime, а не LocalDateTime. Вы также можете попробовать это:

LocalTime localTime = LocalTime.parse("10:45:30 PM", DateTimeFormatter.ofPattern("hh:mm:ss a"));
System.out.println(localTime);

Если у вас есть время в 24-часовом формате:

LocalTime localTime = LocalTime.parse("22:45:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(localTime);
...