我必须在我的Java应用程序中打印EST时间。我使用以下方法将时区设置为EST:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("EST"));
但是,当在该时区遵循夏令时时,我的代码将无法打印正确的时间(它可以少打印1小时)。
不管是否遵守夏令时,如何使代码始终读取正确的时间?
PS:我尝试将时区设置为EDT,但不能解决问题。
这是开始的问题:
应该完全避免使用3个字母的缩写,而应使用TZDB区域ID。EST是东部标准时间- 标准时间从不遵守夏令时;它不是一个完整的时区名称。这是部分时区的名称。(不幸的是,我对这个“半时区”概念还没有一个好词。)
你需要一个完整的时区名称。例如,America/New_York在东部时区:
TimeZone zone = TimeZone.getTimeZone("America/New_York"); DateFormat format = DateFormat.getDateTimeInstance(); format.setTimeZone(zone); System.out.println(format.format(new Date()));