2010-03-07 35 views
6

Escribí algunas líneas de código que no funciona correctamente. ¿Por qué? ¿Podría sb explicarme?Cómo comprobar si hoy es domingo con Java Calendar

Calendar date = Calendar.getInstance(); 

    date.set(2010, 03, 7); 

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

Me sorprende que nadie haya sugerido usar Joda Time todavía ... Es una API mucho mejor para hacer el manejo de la fecha/hora. – SteveD

Respuesta

12

Para evitar cometer errores, puede utilizar los valores estáticos de Calendar para el mes, por ejemplo :

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

Debido abril séptimo, 2010 no es un domingo. Months start with zero:. 0 = Enero, 1 = Febrero, 2 = de marzo, ...

(octal También, nota al margen, que ha utilizado cuando se especifica el mes [03 en lugar de 3] No hay problema hasta llegar a septiembre , con lo cual 08 es un número octal válido)

9

Meses cuentan desde cero:.

date.set(2010, 2, 7); 

también no consigue en el hábito de escribir los números con ceros a la izquierda. Eso le dice a Java (y a muchos otros lenguajes) que quiere que el número se interprete como una constante octal (base 8), no decimal.

+1

¡Gracias por el voto sin sentido y sin comentarios! – Pointy

3

Probablemente porque el mes está basado en 0, por lo que establece el 7 de abril, que es un miércoles.

3

El valor del mes está basado en 0. Java docs for set method of Calendar class.

Además, si desea comprobar si hoy (el día en que se ejecuta el programa :)) es domingo, no necesita configurar nada, porque el método getInstance devuelve un objeto Calendario basado en la hora actual en la zona horaria predeterminada con la configuración regional predeterminada:

4

¿Esto es para Euler 19?

Si es así, aquí es una punta, bucle de 1901-2000, de 0 a 11 meses, desde los días 1-31, entonces pregunte:

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

Para mí este código funcionaba correctamente, ajuste la fecha exacta por ella milisegundos y tratar de esta manera: -

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; 

Gracias, Prabhat Kumar Kashyap

0

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

debería ser lo suficientemente bueno.

Cuestiones relacionadas