我想你們中的一些人會閱讀標題,然後說:「哦,另外一個關於java基於0的月份系統的問題......」。那麼,不是這次。爲什麼Calendar.JUNE將月份設置爲7月份?
當我們切換到夏時制時間後,我的java日曆對象的行爲就顯得非常有效。將月份設置爲JUNE,實際上將其設置爲7月。我不知道爲什麼,但有人建議我在日曆的構造函數參數中設置Locale
- 對象。這沒有用。以下代碼在我的控制檯中返回01-07-14
。
任何想法?
public class test {
public static void main(String[] args){
Locale locale = new Locale("da-DK");
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
Calendar date = new GregorianCalendar(locale);
date.set(Calendar.MONTH, Calendar.JUNE);
System.out.println(sdf.format(date.getTime()));
}
}
UPDATE:
這也將返回01-07-14
public class test {
public static void main(String[] args){
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
TimeZone timeZone = TimeZone.getTimeZone("Europe/Copenhagen");
Calendar date = new GregorianCalendar(timeZone);
date.set(Calendar.MONTH, Calendar.JUNE);
System.out.println(sdf.format(date.getTime()));
}
}
要正確處理DST,您需要告訴代碼使用哪個TimeZone。 – nablex
通過「切換到夏令時」,你的意思是有史以來第一次,還是每年這個時候經常發生? –
這是每年經常發生的事情,但這是我第一次受到系統影響。它是在不到半年前製作的,所以它是自那以後的第一次出現。 – KjetilNordin