使用基本字段构建日历时,日历实例提供错误的周数

时间:2013-04-01 20:41:53

标签: java calendar week-number

我想了解为什么会发生这种情况,我该如何解决这个小问题。 我希望能够在提供日,月和年之后从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,没有更多信息

2 个答案:

答案 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。