Java 使用基本字段生成日历时,日历实例提供了错误的周数

Java 使用基本字段生成日历时,日历实例提供了错误的周数,java,calendar,week-number,Java,Calendar,Week Number,我想了解为什么会发生这种情况,以及如何解决这个小问题。 在提供了日期、月份和年份之后,我希望能够从java日历实例中获取周数。 如果我这样做: 2013年2月11日是第7周,但如果我在上述日历实例中调用: int weekNumber=cal.get(Calendar.week_of_year) 我得到了第11周。 知道为什么吗? 我尝试设置区域设置,但没有区别,问题是我只能用这三个字段构建日历,因为我使用解析器从xml文件中读取它们,它们的格式是dd-mm-yyyy,没有更多信息表明日历中的

我想了解为什么会发生这种情况,以及如何解决这个小问题。 在提供了日期、月份和年份之后,我希望能够从java日历实例中获取周数。 如果我这样做:

2013年2月11日是第7周,但如果我在上述日历实例中调用:

int weekNumber=cal.get(Calendar.week_of_year)
我得到了第11周。 知道为什么吗?
我尝试设置区域设置,但没有区别,问题是我只能用这三个字段构建日历,因为我使用解析器从xml文件中读取它们,它们的格式是dd-mm-yyyy,没有更多信息表明
日历中的月字段是零基的。值
2
对应于。为了避免混淆,最好使用
日历
常量。您可以使用:

cal.set(Calendar.MONTH, Calendar.FEBRUARY);

您使用了March,因为中的Java月份是基于0的:0=一月,1=二月,2=三月

使用


如果你能用一个常数。否则,从解析器收到的月份中减去1。

要了解一些背景知识和更深层次的理解,了解原因和备选方案,请阅读本文:参见
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.MONTH,1);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);