2013-11-26 47 views
-1

我想通過這樣做,以填補日曆對象:Java日曆對象減去一個月

Date now = new Date(System.currentTimeMillis()); 
Calendar cal = Calendar.getInstance(); 
    cal.setTime(now); 

現在是2013年11月26日,但是當我打印出來

cal.get(Calendar.MONTH) 

它將返回10.

我該如何解決這個問題?

+3

你爲什麼不看'Calendar'類的文檔? http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH –

+0

如果您想要將月份編號顯示給您的用戶,或將其寫入文件,您應該查看變成使用'SimpleDateFormat'。 'Calendar.get'返回的數字僅供內部使用,因此您可以將它們與'Calendar.NOVEMBER'進行比較。 –

回答

2

您不需要修復它。這是Calendar的行爲。

cal.get(Calendar.MONTH)

您使用 System.currentTimeMillis()這是當前月份

返回10因爲月份從0開始。所以10是第11個月。即Nov

0-Jan 
1-Feb 
- 
- 
1

Calendar.MONTH

場數的Javadoc獲取和設置指示一個月。這是一個日曆特定的值。今年的陽曆和羅馬儒略曆的第一個月是一月份是0

0

cal.get(Calendar.MONTH) + 1 - 編號從0

0

開始要打印正確

cal.get(Calendar.MONTH) 

如果一個月JAN它打印0,因此對於NOV10

1

使用Calendar常量de罰款月:

if(cal.get(Calendar.MONTH) == Calendar.NOVEMBER) 
    System.out.println("It's November."); 

一個Calendar的月份字段是基於零的,像一個數組索引。

0

相比之下,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