我写了几行无法正常工作的代码。为什么?某事可以解释一下吗?
Calendar date = Calendar.getInstance();
date.set(2010, 03, 7);
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
System.out.println("OK");
答案 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
应该足够好。