我写了几行代码无法正常工作。为什么?可以解释我吗?如何检查今天是否是Java日历的星期日
Calendar date = Calendar.getInstance();
date.set(2010, 03, 7);
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
System.out.println("OK");
我写了几行代码无法正常工作。为什么?可以解释我吗?如何检查今天是否是Java日历的星期日
Calendar date = Calendar.getInstance();
date.set(2010, 03, 7);
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
System.out.println("OK");
为避免出错,可以使用月份的日历静态值,例如:
date.set(2010, Calendar.MARCH, 7);
因为月7日,2010年是不是星期日。 Months start with zero:0 =月,1月=,= 2月,...
(另外,侧面说明,你已经使用八进制指定每月[03
代替3
当没什么大不了的,直到你到九月,于是08
是无效的八进制数)
个月零计数:
date.set(2010, 2, 7);
也不要在数字书写与前导零的习惯得到。这告诉Java(以及其他许多语言),您希望将数字解释为八进制(基数8)常量,而不是十进制。
感谢您的无意义和无评论downvote! – Pointy 2010-03-07 13:45:38
可能因为这个月是基于0的,所以你设置了4月7日,这是一个星期三。
月份值是从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");
这是欧拉19吗?
如果是这样,这里有个小技巧,循环一九〇一年至2000年,从月0到11,从1-31天,然后问:
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY && day==1)
counter++;
对于我这个代码工作正常,请设置通过它确切的日期毫秒,并尝试这样的: -
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库马尔卡什亚普
cal.DAY_OF_WEEK == cal.SATURDAY || cal.DAY_OF_WEEK == cal.SATURDAY
应该足够好。
我很惊讶没有人建议使用乔达时间呢...这是一个更好的API做日期/时间处理。 – SteveD 2010-03-07 14:08:00