Правильный способ - использовать объект SimpleDateFormat
(или, скорее, DateFormat
). String.format предназначен для форматирования строк, возвращаемых в результате вызова метода toString()
над переданным объектом. Первая строка кода может быть разбита на что-то вроде
String temp = now.toString();
System.out.println("Formatter: " + String.format("%1$tH:%1$tM:%1$tS %1$tz %1$tZ", temp));
Временный строковый объект отформатирован с использованием локали и настроек по умолчанию и, следовательно, может не гарантировать идеальный результат (по моему опыту).
SimpleDateFormat()
работает над объектом Date
, получает доступ к атрибутам и проверяет все исправления DST.