2014-06-07 86 views
0

對不起,問愚蠢的問題,但我不能讓周的正確數目2014年6月的日曆返回:周月2014年6月

public static void main(String[] args) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.DAY_OF_MONTH, 1); 
    calendar.set(Calendar.MONTH, Calendar.JUNE); 
    calendar.set(Calendar.YEAR, 2014); 
    calendar.setFirstDayOfWeek(Calendar.MONDAY); 
    System.out 
     .println("first day of week: " + calendar.getFirstDayOfWeek()); 
    System.out.println("weeks in month: " 
     + calendar.getActualMaximum(Calendar.WEEK_OF_MONTH)); 
    System.out.println("days in month: " 
     + calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); 
} 

我越來越:

first day of week: 2 
weeks in month: 5 
days in month: 30 

enter image description here

爲什麼2014年6月的週數不是6?我在Mac OS X 10.9.3上使用jdk1.8.0_05。

+0

我也嘗試用Locale.UK創建日曆。 – ruruskyi

回答

7

一週的定義取決於每個Locale(國家,地區,無論什麼)定義爲一週中的第一天。你可以用Calendar#getFirstDayOfWeek()來檢查。這也取決於它認爲在第一週的最短日期應該是多少。你可以通過Calendar#getMinimalDaysInFirstWeek()獲得。你的Locale似乎表明,它需要一天以上才能考慮這一週的這段時間。

例如,對於Locale.CANADA,自getMinimalDaysInFirstWeek()返回1以來,我獲得了6周。

+0

這是一樣的,如果我做Calendar.getInstance(Locale.FRANCE);或Calendar.getInstance(Locale.UK); – ruruskyi

+1

@ruruskyi是的,因爲這兩者都需要一週4天。 –

+0

謝謝! calendar.setMinimalDaysInFirstWeek(1);做的伎倆 – ruruskyi

相關問題