2010-05-31 61 views
5

你好,我有一個GregorianCalendar的問題。Java GregorianCalendar我做錯了什麼?錯誤的日期?

那裏有什麼問題?

結果是2010/6/1而不是2010/05/31?

package test; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Main { 

    public static void main(String[] args) { 
     Calendar cal = new GregorianCalendar(2010, 5, 31); 
     System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH)); 
    } 

} 

回答

9

Java從0開始計數個月,因此5是6月。使用常量總是比較安全。所以我會寫:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31); 

這同樣適用於您的日曆打印輸出。如果你這樣做cal.get(Calendar.MONTH)你得到6意味7月。

1

這是因爲月份數字爲零,所以你試圖設置6月31日,但6月只有30天,所以它被轉換爲7月1日。