时区EST和EST5EDT有什么不同?



EST和EST5EDT有什么不同?EST没有考虑DST吗?

我写了一个小的java代码片段来找出差异,输出说EST5EDT考虑了DST,而EST没有

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST5EDT")); 
System.out.println("EST5EDT" +dateFormat.format(new Date()));
    /* prints EST5EDT2013-Apr-05 02:24:16.471 */  

dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST")); 
System.out.println("EST "+dateFormat.format(new Date()));
   /*prints EST 2013-Apr-05 01:24:16.472 */

但是下面的代码片段产生了令人震惊的输出

System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000));
/* prints 5 instead of 4 (DST) */
谁能解释一下这里到底发生了什么?为什么getRawOffset返回5而不是4 ?如何获得时区偏移与DST?

EST不考虑DST吗?

。根据定义,EST是"东部标准时间"或UTC-5:00。

EDT是"东部夏令时"或UTC-4:00。

这有点令人困惑,因为例如,纽约在EST和EDT之间切换,西雅图在PST和PDT之间切换。

有时人们会错误地说"我会打电话给你东部时间下午1点",而实际上他们想说的是"我会打电话给你东部时间下午1点",这适当地考虑了是否为夏令时。

这个网页有更多的信息。

为什么getRawOffset返回5而不是4

时区。getRawOffset总是返回标准时间的毫秒数,即5 * (60 * 60 * 1000)

由于UTC偏移量根据一年中的一天而变化(为了考虑DST),您需要使用getOffset,并提供您想要使用的日期。

相关内容

  • 没有找到相关文章

最新更新