我想了解为什么会发生这种情况,我该如何解决这个小问题。 我希望能够在提供日,月和年之后从java日历实例中获取周数。 如果我这样做:
Calendar cal=Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 11);
cal.set(Calendar.MONTH,2);
cal.set(Calendar.YEAR, 2013);
2013年2月11日是第7周,但如果我在上面的日历实例中调用:
int weekNumber=cal.get(Calendar.week_of_year)
我得到了第11周。 知道为什么吗? 我尝试设置区域设置,但没有区别,问题是我只能从这三个字段中构建一个日历,因为我正在从带有解析器的xml文件中读取它们,它们的格式为dd-mm-yyyy,没有更多信息
答案 0 :(得分:0)
Calendar
中的月份字段为零。值2
对应Calendar.MARCH。为避免混淆,最好使用Calendar
常量。你可以使用:
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
答案 1 :(得分:0)
您使用了March,因为Calendar
中的Java月份基于0:0 = 1月,1 = 2月,2 = 3月。
使用
cal.set(Calendar.MONTH,1);
或
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
如果你可以使用常数。否则,从您从解析器收到的月份中减去1。