遇到了DST的一些问题(目前仅在Galaxy Tab 2 10.1,android 4.2.2上进行了检查)
如果我以毫秒为单位询问当前时间:
Log.v(TAG, "Current time millis: " + System.currentTimeMillis());
Log.v(TAG, "Current date millis: " + new Date().getTime());
它将输出不正确的时间,在一小时内缩小。 (例如,如果当前实时为1421336873000
,则会输出1421333273640
)。
接下来,解析日期:
String dateStr = "2015-01-15T14:30:00 GMT+00:00";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z");
Date date = dateFormat.parse(dateStr);
Log.v(TAG, "Date: " + date);
Log.v(TAG, "Formatted: " + dateFormat.format(date));
将打印:
Date: Thu Jan 15 18:30:00 GMT+03:00 2015
Formatted: 2015-01-15T18:30:00+0400
在第一种情况下,我们有正确的时区(+03),但时间应该是17:30:00
在第二种情况下,打印时间是正确的,但时区是错误的......
有点困惑,如何处理?
我需要打印正确的时间:2015-01-15T17:30:00 + 0300
P.S。
调用inDaylightTime
会返回false
getDSTSavings()
返回零
getRawOffset()
和getOffset(..)
始终返回4小时