不正确的week_of_year

时间:2013-01-03 18:59:19

标签: java

有下一个功能来获得一年中的一周:

static public Integer getWeek(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setMinimalDaysInFirstWeek(1);
    cal.setTime(date);
    Integer week = cal.WEEK_OF_YEAR;
    Integer month = cal.MONTH;
    if ((week == 1) && (month == 12)) week = 52;
    return week;
}

使用date = 02.01.2013

调用该函数

我在调试中看到的内容:

  1. date = Wed Jan 02 00:00:00 SAMT 2013
  2. week = 3
  3. month = 2
  4. 我想得到:周= 1,月= 1。正确?

    我哪里错了?

    JRE 1.6

    非常感谢你的进步。

2 个答案:

答案 0 :(得分:11)

Calendar.WEEK_OF_YEARCalendar.MONTH是静态常量,用于查找字段。你想要

Integer week = cal.get(Calendar.WEEK_OF_YEAR);
Integer month = cal.get(Calendar.MONTH);

另外,请注意(我认为)1月被视为第0个月。

答案 1 :(得分:0)

public final static int WEEK_OF_YEAR = 3;是日历内部的来源。

当您访问WEEK_OF_YEAR时,它会打印此字段的值,将其视为访问Calendar类的静态字段。

如果您想要获得周,则需要执行Integer week = cal.get(Calendar.WEEK_OF_YEAR);