我坚持在Android上运行这个示例:
SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy kkmm");
sdf.setTimeZone(TimeZone.getTimeZone(Time.TIMEZONE_UTC));
Date scheduledDateTime = sdf.parse(sms.getScheduledDateTime());
Log.i(TAG, "scheduledDateTime is : " + scheduledDateTime); // scheduledDateTime is : Fri Jan 06 23:58:00 HNEC 2012
Log.i(TAG, "scheduledDateTime milli : " + scheduledDateTime.getTime()); // scheduledDateTime milli : 1325890680000
Calendar calendar = Calendar.getInstance();
Calendar defaultTZCalendar = Calendar.getInstance(TimeZone.getDefault());
Calendar utcTZCalendar = Calendar.getInstance(TimeZone.getTimeZone(Time.TIMEZONE_UTC));
calendar.setTime(scheduledDateTime);
defaultTZCalendar.setTime(scheduledDateTime);
utcTZCalendar.setTime(scheduledDateTime);
Log.i(TAG, "calendar : " + calendar.getTimeInMillis()); // calendar : 1325890680000
Log.i(TAG, "defaultTZCalendar : " + defaultTZCalendar.getTimeInMillis()); // defaultTZCalendar : 1325890680000
Log.i(TAG, "utcTZCalendar : " + utcTZCalendar.getTimeInMillis()); // utcTZCalendar : 1325890680000
现在看看这个:
final long currentTimeMillis = System.currentTimeMillis();
Log.i(TAG, " currentTimeMillis is " + currentTimeMillis); // currentTimeMillis is 1341608182431
Date d = new Date(currentTimeMillis);
Log.i(TAG, " currentTimeMillis is " + d + " ::: d.getTime() = " + d.getTime()); // currentTimeMillis is Fri Jul 06 22:56:22 HAEC 2012 ::: d.getTime() = 1341608182431
两个看起来相同的日期之间怎么可能有15713902431这样的差异:FJ Jan 06 23:58:00 HNEC 2012和Fri Jul 06 22:56:22 HAEC 2012
BTW,
HNEC(法语)正常中欧时间
HAEC是Advanced Central Europ时间(即DST)
由于
答案 0 :(得分:2)
最后一部分对我来说都很好看。日期不“看起来一样”。一个是七月,另一个是一月。所以15713902431毫秒 - 接近182天 - 似乎完全合理。
现在,为什么你的数据没有正确解析 - 你的格式被打破了:
new SimpleDateFormat("dd-mm-yyyy kkmm");
注意“dd”和“yyyy”之间的“mm”。 mm
分钟,而非月。
我强烈怀疑你应该使用:
new SimpleDateFormat("dd-MM-yyyy kkmm");
然后你可能会在正确的月份获得价值:)