0

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

同じように見える 2 つの日付の間に 15713902431 のような違いがあるのはどうしてですか: Fri Jan 06 23:58:00 HNEC 2012 と Fri Jul 06 22:56:22 HAEC 2012

ところで、

HNEC は (フランス語で) 標準中央ヨーロッパ時間です。

HAEC は Advanced Central Europ time (DST) です。

ありがとう

4

1 に答える 1

2

最後の部分では、すべてがうまく見えます。日付は「同じに見えません」。1つは7月、もう1つは1月です。したがって、15713902431 ミリ秒 - ほぼ 182 日 - は完全に合理的に見えます。

データが正しく解析されない理由について-フォーマットが壊れています:

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

「dd」と「yyyy」の間の「mm」に注意してください。mmではなくです。

以下を使用する必要があると強く思います。

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

その後、適切な月に値を取得できます:)

于 2012-07-06T21:34:45.013 に答える