Android中的日期时间不一致

Android中的日期时间不一致,android,datetime,Android,Datetime,我一直坚持在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 : " +

我一直坚持在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
两个看起来相同的日期:2012年1月6日星期五23:58:00 HNEC和2012年7月6日星期五22:56:22 HAEC之间怎么可能有15713902431的差异

顺便说一句

HNEC是(法语)正常的中欧时间

HAEC是高级中央欧洲时间(即DST)


谢谢

在结尾部分,我觉得一切都很好。日期“看起来不一样”。一个在七月,另一个在一月。因此15713902431毫秒——将近182天——似乎完全合理

现在,关于数据解析不正确的原因,您的格式已损坏:

new SimpleDateFormat("dd-mm-yyyy kkmm"); 
注意“dd”和“yyyy”之间的“mm”<代码>毫米是分钟,而不是月

我强烈怀疑您应该使用:

new SimpleDateFormat("dd-MM-yyyy kkmm"); 

然后你可能会在正确的月份得到价值观:)

先生,你很善良,我很愚蠢。由于S.O.的原因,我们将在几分钟内接受您的答复。谢谢