Jee*_*van 7 java timezone timezone-offset
EST5EDT的EST有何不同?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 */
Run Code Online (Sandbox Code Playgroud)
但下面的片段产生了令人震惊的输出
System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000));
/* prints 5 instead of 4 (DST) */
Run Code Online (Sandbox Code Playgroud)
有人可以解释这里究竟发生了什么吗?为什么getRawOffset返回5而不是4?如何使用DST获得时区偏移?
Ala*_*lan 10
EST不考虑DST吗?
根据定义,EST是"东部标准时间"或UTC-5:00.
EDT是"东部夏令时"或UTC-4:00.
这有点令人困惑,因为例如,纽约在EST和EDT之间切换,而西雅图在PST和PDT之间切换.
有时候人们会错误地说"我会在美国东部时间下午1点给你打电话"当他们真的想说"我会在东部时间下午1点给你打电话",这恰好考虑了它是否是夏令时.
这个wikipage有更多的信息.
为什么getRawOffset返回5而不是4
Timezone.getRawOffset始终返回标准时间的毫秒数,即5*(60*60*1000)
由于UTC偏移量基于一年中的某一天而变化(考虑到DST),因此您需要使用getOffset,并为其提供您要使用的日期.
| 归档时间: |
|
| 查看次数: |
22750 次 |
| 最近记录: |