2014-03-26 45 views

回答

1

DST在与ID创建的时区对象像"UTC+1:00"(或“GMT + 1:00”)将是具有不同时区对象创建与相应的字符串"Europe/Berlin",所以如果DST对您的应用程序很重要,请始终使用完整的字符串ID而不是相应的时间偏移量。
因此更改时区定义:

Timezone timezone = TimeZone.getTimeZone("Europe/Berlin"); 

将解决这个问题。

+0

是。另请参阅[时区标记wiki](http://stackoverflow.com/tags/timezone/info)中的“时区!=偏移”。 –

1

不,TimeZone API数据显示日光节约。您正在使用自定义时区ID。

没有夏令时转换安排可以用自定义时区ID

所以被指定的时区API的文档,你需要指定的时区ID可以得到节省一天的光

通常情况下,您会使用getDefault获取TimeZone,它会根据运行程序的时区创建TimeZone。例如,对于在日本运行的程序,getDefault会根据日语标准时间创建TimeZone对象。您还可以使用getTimeZone和时区标识获取TimeZone。例如,美国太平洋时区的时区ID是“America/Los_Angeles”。所以,你可以得到一个美国太平洋时间TimeZone对象:

使用的时区ID,这会照顾储蓄一天光在特定区域

TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 
+0

你对**自定义时区**是正确的。但在现实世界中,_time差异description_和_Olson id_可互换使用(例如在windows时钟中)。因此,人们可能不会仔细注意文档,并考虑两种时区**的表示形式(如我所做的那样)。 我故意提出了问题的主题,因为如果有人犯了我犯的错误,他们会看到像这样的问题。所以你是对的,没有什么bug或者TimeZone API的东西。也许我应该改变问题的标题。 –

+0

另外,getDefault()没有得到正确的时区(DST设置为零)[这里是示例](http://ideone.com/OXwiIu) –

+1

@AlirezaMirian:我刚刚更新了标题。希望现在对于研究相同问题的人来说更有用。 – Olaf

相关问题