2014-01-26 108 views
1

我想獲取本週的第一個星期一以及本週的第一個星期五的日期。Android日曆:本週的第一天和最後一天 - >零個月

我試着這樣說:

Calendar calendarFirstDay = Calendar.getInstance(Locale.GERMANY); 
    Calendar calendarLastDay = Calendar.getInstance(Locale.GERMANY); 
    Date now = new Date(); 

    calendarFirstDay.setTime(now); 
    calendarLastDay.setTime(now); 
    calendarFirstDay.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
    calendarLastDay.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 

    MyTextView.setText(calendarFirstDay.get(Calendar.DATE) + "." + calendarFirstDay.get(Calendar.MONTH) + "." + calendarFirstDay.get(Calendar.YEAR) + " - " + calendarLastDay.get(Calendar.DATE) + "." + calendarLastDay.get(Calendar.MONTH) + "." + calendarLastDay.get(Calendar.YEAR)); 

如果我試試這個腳本今日(週日,2014年1月26日),輸出如下:

20.0.2014 - 24.0.2014

正確的將是2014年1月20日 - 2014年1月24日

是否有人知道爲什麼我的月份是零?

回答

2

From the JavaDocs

getset指示一個月場數。這是一個日曆特定的值。格里曆和Julian日曆中的第一個月是JANUARY,這是0;最後一個取決於一年中的月數。

因此第一個月(1月)有一個0MONTH,而不是1(如你所期望的那樣)。

雖然有一個更好的解決方案:使用DateFormatSimpleDateFormat將日期的格式設置爲文本。這樣,你只需就不必擔心這個問題,並讓DateFormat照顧它。例如:

DateFormat myFormat = new SimpleDateFormat("dd.MM.yyyy"); 
MyTextView.setText(
    myFormat.format(calendarFirstDay.getTime()) + " - " + 
    myFormat.format(calendarLastDay.getTime()) 
); 
+0

非常感謝這個很好的解釋!這對我幫助很大! :) – Pengxer

+0

但我認爲,日曆沒有'getDate()'方法。我認爲,'getTime()'對此很好。 – Pengxer

+0

@Pengxer哎呀,這確實是一個錯字。令人困惑的方法名稱令人困惑。 :-P –

相關問題