import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class Test001 {
public static void main(String[] args) {
Date dt = new Date();
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS zzz").withZone(ZoneId.of("America/New_York"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz");
System.out.println(formatter.format(localDateTime));
System.out.println(sdf.format(dt));
}
}
Выход
2016-04-19 11:25:34.917 ET
2016-04-19 11:25:34.637 EDT
Часовой пояс моего ноутбука — "Америка/Нью-Йорк" (т. е. восточное время США/Канады).
Интересно, как получить "EDT" вместо "ET" с помощью DateTimeFormatter
.
Мне также интересно в целом: почему DateTimeFormatter
не совместим с SimpleDataFormat
с точки зрения шаблонов синтаксического анализа/форматирования (как показывает этот пример, они не совместимы ).
SimpleDateFormat
в значительной степени является устаревшим классом, начиная с Java 8. Примечание к версии. В этом разделе «Дата и время» используются API даты и времени из пакетаjava.util
. API-интерфейсыjava.time
, доступные в версии JDK 8, предоставляют комплексную модель даты и времени, которая предлагает значительные улучшения по сравнению с классамиjava.util
. API-интерфейсыjava.time
описаны в следе даты и времени. Особый интерес может представлять страница «Устаревшие коды даты и времени». - person Mr. Polywhirl   schedule 19.04.2016