2010-06-29 67 views
1

我有這樣的代碼:日期差異包括時區偏移量,怎麼回事?

Date now = new Date(); 
// the string is in UTC format, so a UTC date must be constructed, I don't know if that happens in this format 
Date measure = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(utcDateTime); 
long diff = now.getTime() - measure.getTime(); 
if (diff < 1000* 60 * 15) { 
    // measure is less then 15 minutes recent 
    do some work 
} 

當我得到的差異,它包括時區。我知道內部的Date對象是UTC。

那麼這裏有什麼問題?

回答

3

雖然Date對象確實是UTC,但您的SimpleDateFormat可能不是。我懷疑它是默認的系統時區 - 這當然是實驗所暗示的。您可以使用DateFormat.setTimeZone更改此設置。因此,如果您的文本表示UTC日期/時間,則應該將格式化器的時區設置爲UTC。

或者你可以使用Joda Time,這是一種通常更好的日期和時間API :)

+0

謝謝,我會記住約達時間,雖然我不知道是否可用於Java 1.5和Android。 – Pentium10 2010-06-29 10:46:39