java.util.calendar表现得很奇怪

时间:2013-08-22 18:58:16

标签: java date calendar java.util.calendar

所以,我找到了java.util.Calendar,并尝试将它用于我正在进行的Android项目。

我完全不明白Calendar.DAY_OF_WEEK如何在星期四返回7? 现在当它是八月Calendar.WEEK_OF_YEAR返回4,这根本没有任何意义!

我也尝试了GregorianCalendar,它给出了完全相同的结果。

试图找到关于它们如何计算的任何文档,但我找不到任何东西。 似乎有一些非常明显的东西,但我无法找到它是什么!

我写的代码在这里:

    // Get if daily or weekly
    boolean daily;
    daily = getPrefs.getBoolean("checkbox_daily", false);
    String day = "0";
    if (daily){
        switch(GregorianCalendar.DAY_OF_WEEK){
            case GregorianCalendar.MONDAY:
                Do_stuff();
                break;
            case GregorianCalendar.TUESDAY:
                Do_stuff();
                break;
            case GregorianCalendar.WEDNESDAY:
                Do_stuff();
                break;
            case GregorianCalendar.THURSDAY:
                Do_stuff();
                break;
            case GregorianCalendar.FRIDAY:
                Do_stuff();
                break;
        }
    }

2 个答案:

答案 0 :(得分:8)

GregorianCalendar.DAY_OF_WEEK不变,

您需要calendarInstance.get(GregorianCalendar.DAY_OF_WEEK);

答案 1 :(得分:1)

来自java.util.Calendar docs:

  

日历使用两个来定义特定于语言环境的七天工作周   参数:一周的第一天和第一天的最小天数   一周(从1到7)。这些数字取自语言环境资源   构建日历时的数据。它们也可能被指定   明确地通过设置其值的方法。

     

设置或获取WEEK_OF_MONTH或WEEK_OF_YEAR字段时,   日历必须将月份或年份的第一周确定为   参照点。一个月或一年的第一周被定义为   最早的七天时间从getFirstDayOfWeek()开始   至少包含该月的getMinimalDaysInFirstWeek()天或   年。周数在第一周之前编号为......,-1,0;周数   2,3,......跟着它。请注意,返回的规范化编号   get()可能不同。例如,特定的Calendar子类可以   将前一周的第1周指定为前一周的第n周   年。