簡體   English   中英

Android日歷:一周的第一天和最后一天->零個月

[英]Android Calendar: first and last day of week -> zero month

我想獲取當前一周的第一個星期一的日期和當前一周的第一個星期五的日期。

我這樣嘗試過:

    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

正確的是20.1.2014-24.1.2014

有人知道為什么我的月份為零嗎?

從JavaDocs

getset字段號指示月份。 這是日歷特定的值。 今年的陽歷和羅馬儒略歷的第一個月是JANUARY是0; 最后一個取決於一年中的月份數。

因此,第一個月(一月)的MONTH值為0 ,而不是1 (如您所期望的)。

不過,還有一個更好的解決方案:使用DateFormatSimpleDateFormat將日期設置為文本格式。 這樣,您就不必擔心此問題,而讓DateFormat來處理它。 例如:

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

如中所述

http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#set(int,%20int,%20int)

如果使用此方法,則一月將為0,十月號將為11,因此您應在月份中加1。

編輯:您正在使用get方法,但它也可能基於0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM