2010-03-07 5 views
6

J'ai écrit quelques lignes de code qui ne fonctionnent pas correctement. Pourquoi? Est-ce que sb pourrait m'expliquer?Comment vérifier si aujourd'hui est dimanche avec 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

Je suis surpris que personne ne suggère d'utiliser Joda Time ... C'est une API bien meilleure pour gérer la date et l'heure. – SteveD

Répondre

12

Pour éviter les erreurs, vous pouvez utiliser les valeurs statiques du calendrier pour le mois, par ex. :

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

Parce que 7ème Avril, 2010 est pas un dimanche. Months start with zero:. 0 = Janvier, Février 1 = 2 = Mars, ...

(également, note côté, vous avez utilisé octal lors de la spécification du mois [03 au lieu de 3] Pas trop grave jusqu'à ce que vous obtenez à Septembre , après quoi 08 est un nombre octal non valide)

9

Mois compter de zéro.

date.set(2010, 2, 7); 

aussi ne sont pas dans l'habitude de l'écriture des nombres avec des zéros à gauche. Cela indique à Java (et à beaucoup d'autres langages) que vous voulez que le nombre soit interprété comme une constante octale (base 8), pas décimale.

+1

Merci pour le downvote inutile et sans commentaire! – Pointy

3

Probablement parce que le mois est basé sur 0, donc vous définissez le 7 avril, qui est un mercredi.

3

La valeur du mois est 0. Java docs for set method of Calendar class. Aussi si vous voulez vérifier si aujourd'hui (le jour où le programme est exécuté :)) est dimanche, vous n'avez rien à définir, car la méthode getInstance renvoie un objet Calendrier basé sur l'heure actuelle dans le fuseau horaire par défaut avec les paramètres régionaux par défaut:

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

Est-ce pour Euler 19?

Si oui, voici une astuce, boucle 1901-2000, de mois 0 à 11, de jours 1-31, puis demandez:

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

Pour moi ce code a fonctionné correctement, s'il vous plaît régler la date exacte qu'elle milliseconde et essayer comme ceci: -

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; 

Merci, Kumar Prabhat Kashyap

0

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

devrait être assez bon.

Questions connexes