如何使用Java Calendar检查今天是否是星期日

时间:2010-03-07 12:55:46

标签: java date calendar

我写了几行无法正常工作的代码。为什么?某事可以解释一下吗?

    Calendar date = Calendar.getInstance();

    date.set(2010, 03, 7);

    if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
        System.out.println("OK");

8 个答案:

答案 0 :(得分:12)

为避免出错,您可以使用月份的日历静态值,例如:

date.set(2010, Calendar.MARCH, 7);

答案 1 :(得分:9)

月数从零开始计算:

date.set(2010, 2, 7);

也不要养成用前导零写数字的习惯。这告诉Java(以及许多其他语言)您希望将数字解释为八进制(基数为8)常量,而不是十进制。

答案 2 :(得分:5)

因为 4月 7月,2010年不是星期天。 Months start with zero:0 = 1月,1 = 2月,2 = 3月,......

(另外,请注意,在指定月份[03而非3]时,您使用了八进制。在您到达九月之前没有大问题,因此08无效八进制数。)

答案 3 :(得分:4)

这是Euler 19吗?

如果是这样,这里是一个小费,循环从1901年到2000年,从0到11月,从第1-31天开始,然后问:

if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY  && day==1)
     counter++;

答案 4 :(得分:3)

可能是因为月份是0,所以你设定4月7日,也就是星期三。

答案 5 :(得分:3)

月份值为0。 Java docs for set method of Calendar class

另外如果你想检查今天(程序运行的那天:)是星期天,你不需要设置任何东西,因为getInstance方法根据默认的当前时间返回一个Calendar对象具有默认语言环境的时区:

Calendar date = Calendar.getInstance();    
//date.set(2010, 03, 7);    
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
    System.out.println("OK");

答案 6 :(得分:0)

对我来说,这段代码工作正常,请按照毫秒设置确切的日期,并尝试这样: -

    GregorianCalendar dt = new GregorianCalendar();
    dt.setTimeInMillis(getTimestampDDmmYYYY(date).getTime());
    if((dt.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY| dt.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY))
        return true;

谢谢, Prabhat Kumar Kashyap

答案 7 :(得分:0)

cal.DAY_OF_WEEK == cal.SATURDAY         || cal.DAY_OF_WEEK == cal.SATURDAY

应该足够好。