我想通過這樣做,以填補日曆對象:Java日曆對象減去一個月
Date now = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(now);
現在是2013年11月26日,但是當我打印出來
cal.get(Calendar.MONTH)
它將返回10.
我該如何解決這個問題?
我想通過這樣做,以填補日曆對象:Java日曆對象減去一個月
Date now = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(now);
現在是2013年11月26日,但是當我打印出來
cal.get(Calendar.MONTH)
它將返回10.
我該如何解決這個問題?
您不需要修復它。這是Calendar
的行爲。
System.currentTimeMillis()
這是當前月份
。
返回10
因爲月份從0
開始。所以10是第11個月。即Nov
0-Jan
1-Feb
-
-
場數的Javadoc獲取和設置指示一個月。這是一個日曆特定的值。今年的陽曆和羅馬儒略曆的第一個月是一月份是0
cal.get(Calendar.MONTH) + 1
- 編號從0
開始要打印正確
cal.get(Calendar.MONTH)
如果一個月JAN
它打印0
,因此對於NOV
,10
使用Calendar
常量de罰款月:
if(cal.get(Calendar.MONTH) == Calendar.NOVEMBER)
System.out.println("It's November.");
一個Calendar
的月份字段是基於零的,像一個數組索引。
相比之下,Joda-Time 2.3庫提供了一個明智的月份數。例如,December = 12
。
System.out.println("Today's month number: " + new org.joda.time.DateTime(2013, 12, 28, 19, 0, 0).getMonthOfYear());
當運行...
Today's month number: 12
你爲什麼不看'Calendar'類的文檔? http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH –
如果您想要將月份編號顯示給您的用戶,或將其寫入文件,您應該查看變成使用'SimpleDateFormat'。 'Calendar.get'返回的數字僅供內部使用,因此您可以將它們與'Calendar.NOVEMBER'進行比較。 –