Android:夏令时问题
遇到DST的一些问题(目前仅在Galaxy Tab 2 10.1、android 4.2.2上检查) 如果我请求以毫秒为单位的当前时间: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
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”。