Форматирование дат
Форматируйте значения дат с помощью потокобезопасного неизменяемого DateTimeFormatter.
Сравнение кода
✕ Pre-Java 8
// Not thread-safe!
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd");
String formatted = sdf.format(date);
// Must synchronize for concurrent use
✓ Java 8+
DateTimeFormatter fmt =
DateTimeFormatter.ofPattern(
"uuuu-MM-dd");
String formatted =
LocalDate.now().format(fmt);
// Thread-safe, immutable
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Потокобезопасность
Форматтеры можно использовать между потоками без синхронизации.
Встроенные форматы
ISO_LOCAL_DATE, ISO_INSTANT и другие для стандартных форматов.
Неизменяемость
Можно безопасно хранить как static final константу.
Старый подход
SimpleDateFormat
Современный подход
DateTimeFormatter
Начиная с JDK
8
Сложность
Начинающий
Поддержка JDK
Форматирование дат
Доступно
Широко доступен начиная с JDK 8 (март 2014)
Как это работает
DateTimeFormatter неизменяем и потокобезопасен, в отличие от SimpleDateFormat. Его можно сохранять как константу и использовать совместно. Для стандартных форматов доступны предопределённые форматтеры, такие как ISO_LOCAL_DATE.
Связанная документация
Доказательство