Форматирование даты и времени в Java
DateTimeFormatter описывает, как числа даты
и времени складываются в текст. Шаблон задают
ofPattern с буквами вроде yyyy,
MM, dd, HH. Готовые константы
ISO_LOCAL_DATE и ISO_ZONED_DATE_TIME
покрывают стандартный обмен.
Локальную дату и время форматируют методом
format у значения или у форматтера:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime log = LocalDateTime.of(2024, 3, 1, 8, 0, 0);
DateTimeFormatter dots = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
String line = log.format(dots);
System.out.println(line);
}
}
Для зонированной отметки в шаблон добавляют зону
или смещение. Символ V печатает имя пояса,
XXX - смещение +03:00:
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
ZonedDateTime stamp = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
DateTimeFormatter full = DateTimeFormatter.ofPattern(
"yyyy-MM-dd HH:mm:ss V"
);
System.out.println(stamp.format(full));
}
}
Локаль вывода меняют withLocale у форматтера,
если нужны названия месяцев на другом языке.
Форматтер неизменяем: новый экземпляр создают
при каждой смене шаблона или локали.
Выведите текущие дату и время в формате год-месяц-день часы:минуты:секунды.
Дана отметка 2024-03-01 08:00:00 без зоны.
Выведите ее как день/месяц/год часы:минуты.