[英]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
有人知道為什么我的月份為零嗎?
get
和set
字段號指示月份。 這是日歷特定的值。 今年的陽歷和羅馬儒略歷的第一個月是JANUARY
是0; 最后一個取決於一年中的月份數。
因此,第一個月(一月)的MONTH
值為0
,而不是1
(如您所期望的)。
不過,還有一個更好的解決方案:使用DateFormat
或SimpleDateFormat
將日期設置為文本格式。 這樣,您就不必擔心此問題,而讓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.