在中欧,当前时区(截至 10 月 3 日)是:
CEST / UTC+2
SimpleDateFormat
但是当我现在在Android中创建一个实例时......
dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
...它CET / UTC+1
作为时区返回。所以它忽略了此时必须仍然存在的 DST 偏移量。为什么是这样?
此外,当使用实例的(现已弃用)方法getTimezoneOffset()
时Date
,它会返回不一致的结果:
(new Date()).getTimezoneOffset()
正确返回 -120(2 小时),同时dateTimeFormat.parse("2012-10-03T22:00:00.000+0000").getTimezoneOffset()
返回 -60(1 小时)。
这怎么可能发生?我做错了什么还是这是一个已知的错误?
注意:我听说有些库可以提供更好的时间计算(例如 Joda Time),我现在经常听到 ;) 但是使用一些变通方法,您可以轻松地使用内置的 Java 时间库.
而且,当然,时区在我的机器上设置正确。