【发布时间】:2017-08-30 06:25:07
【问题描述】:
我有一段用 java 编写的代码,它使用 EST 时区为我提供正确的时间,如下所示:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class DateProgram {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("EST"));
String dateTime = new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date());
System.out.println(dateTime);
}
}
在这里我想使用 EST 时区添加夏令时的代码,我的输出应该给我正确的时间考虑到 EST 时区和夏令时。
感谢任何帮助, 提前致谢
【问题讨论】:
-
@ZakiAnwarHamdani 我读了这个问题及其解决方案,它没有回答我在这里提出的问题
-
考虑时区的夏令时。这就是另一个问题中提出和回答的问题。您的问题与该问题有何不同?
-
顺便说一句,如果可以,请避免使用早已过时的课程
Date和朋友。你可以。特别是避免TimeZone.setDefault(),它可能不仅会破坏您自己程序的功能,还会破坏在同一JVM中运行的其他程序的功能。我推荐LocalDateTime.now(ZoneId.of("America/New_York")) .format(DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss"))。 -
只是为了强调 Andy Turner 在his answer 中已经说过的话:尽可能避免使用三个和四个字母的时区缩写。它们是模棱两可的,没有标准化的。例如,根据Time Zone Abbreviations – Worldwide List EST 也可能表示澳大利亚东部标准时间 (UTC+10)。