Разбор текста в дату и время в Java
Разбор зеркален форматированию: тот же
DateTimeFormatter передают в parse
или вызывают parse у типа с форматтером
по умолчанию. Несовпадение шаблона и текста
дает DateTimeParseException.
Стандартная локальная отметка без зоны разбирается
LocalDateTime.parse в ISO-виде:
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime slot = LocalDateTime.parse("2024-11-01T09:00:00");
System.out.println(slot.getDayOfMonth());
}
}
Свой порядок частей задают форматтером:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String raw = "25/05/2020 02:35:05";
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
LocalDateTime when = LocalDateTime.parse(raw, fmt);
System.out.println(when.getHour());
}
}
Строка с поясом или смещением собирается в
ZonedDateTime. ISO с суффиксом Z
или +03:00 разбирает ZonedDateTime.parse:
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
ZonedDateTime event = ZonedDateTime.parse("2024-06-15T14:30:00+03:00");
System.out.println(event.toInstant());
}
}
После разбора значение можно перевести в другой
пояс или в Instant для хранения. Шаблон
и текст должны совпадать по пробелам и разделителям.
Разберите 2024-11-01T09:00:00 в формате ISO
и выведите день месяца.
Разберите 15/06/2020 10:17:23 с шаблоном
день/месяц/год часы:минуты:секунды и
выведите минуты.