Android:夏令时问题

时间:2015-01-15 16:04:47

标签: android date timezone timezone-offset

遇到了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小时

0 个答案:

没有答案