EST与美国/New_York时区之间的差异

2022-08-31 15:04:03

有人可以告诉,以下两个语句之间有什么区别吗:

TimeZone.getTimeZone("America/New_York")

TimeZone.getTimeZone("EST")

换句话说,为什么EST与美国/New_York不同。同样在我的应用程序中,要获得美国的当前时区,我应该使用美国/New_York还是EST。


答案 1

美国东部标准时间是 UTC - 5 小时。美国/New_York在冬季是EST,在夏季是E * D * T,所以现在纽约是UTC - 4小时。


答案 2

EST实际上是纽约时区的一。它始终处于标准时间 - 它没有夏令时部分。它本身并不是一个合适的时区,IMO - 它是更完整时区的“标准”部分。当写一个时区只是一个固定的偏移量,与特定的地方无关时,我更喜欢使用“Etc/GMT+5”或类似的明显固定的东西。(我通常不喜欢“东部时间”之类的东西,因为观察“东部时间”的不同地方在DST转换方面可能会有所不同。这有点像调用编码“扩展 ASCII”...它告诉你一些信息,但还不够。

因此,如果您想了解纽约在任何特定时刻的实际当地时间,请使用美国/New_York。

一般来说,远离缩写。从文档中

为了与 JDK 1.1.x 兼容,还支持其他一些三字母时区 ID(如“PST”、“CTT”、“AST”)。但是,它们的使用已被弃用,因为相同的缩写通常用于多个时区(例如,“CST”可能是美国的“中央标准时间”和“中国标准时间”),然后Java平台只能识别其中一个。

(就个人而言,我也建议您远离和,最好尽可能使用Joda Time。不过,这真的是另一回事。DateCalendar


推荐