2010-03-07 148 views
6

我写了几行代码无法正常工作。为什么?可以解释我吗?如何检查今天是否是Java日历的星期日

Calendar date = Calendar.getInstance(); 

    date.set(2010, 03, 7); 

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

我很惊讶没有人建议使用乔达时间呢...这是一个更好的API做日期/时间处理。 – SteveD 2010-03-07 14:08:00

回答

12

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

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

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

(另外,侧面说明,你已经使用八进制指定每月[03代替3当没什么大不了的,直到你到九月,于是08是无效的八进制数)

9

个月零计数:

date.set(2010, 2, 7); 

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

+1

感谢您的无意义和无评论downvote! – Pointy 2010-03-07 13:45:38

3

可能因为这个月是基于0的,所以你设置了4月7日,这是一个星期三。

3

月份值是从0开始的。 Java docs for set method of Calendar class

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

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

这是欧拉19吗?

如果是这样,这里有个小技巧,循环一九〇一年至2000年,从月0到11,从1-31天,然后问:

if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY && day==1) 
    counter++; 
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库马尔卡什亚普

0

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

应该足够好。

相关问题