Почему я не могу спарсить время?
Я пытаюсь спарсить текущее время по моему паттерну, используя DateTimeFormatter, но получаю ошибку. Я уверен, что использую правильный паттерн времени. Почему это происходит и как можно пофиксить?
public class Main {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
String time = now.toString();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
LocalDateTime result = LocalDateTime.parse(time, formatter);
System.out.println(result);
}
}
Exception in thread "main" java.time.format.DateTimeParseException: Text '2023-12-05T14:26:53.767' could not be parsed at index 2
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at Main.main(Main.java:11)
Process finished with exit code 1
Ответы (1 шт):
Автор решения: Danila Kartovitskii
→ Ссылка
Проблема заключается в том, что Вы сначала преобразовываете время
LocalDateTime now = LocalDateTime.now() в строку через now.toString(), а затем снова парсите его обратно в LocalDateTime. Это вызывает ошибку, потому что now.toString() возвращает строку в формате ISO, который не соответствует шаблону "dd.MM.yyyy HH:mm".
Вот правильный код:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
String formattedTime = now.format(formatter);
System.out.println(formattedTime);
}
}