Почему я не могу спарсить время?

Я пытаюсь спарсить текущее время по моему паттерну, используя 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);
    }
}
→ Ссылка