[英]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.