Android:夏令时问题

Android:夏令时问题,android,date,timezone,timezone-offset,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,它将输出142133

遇到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。
getdstssavings()
返回零
getRawOffset()
getOffset(..)
始终返回4小时

根据需要,您可以尝试ZZZZ而不是模式中的一个字母Z,以便解析组件“GMT+00:00”。