J'essaie de créer une méthode qui vérifie si "aujourd'hui" se situe entre le lundi et le vendredi. Pour cela, je reçois avec cette ligne 'int day = Calendar.DAY_OF_WEEK;'
le jour réel. Après cela, je remplis une liste de tableaux avec les jours (lundi, mardi, mercredi, jeudi et vendredi). Maintenant, quand je vérifie si le jour réel est dans ma liste de tableaux, je mets boolean DAY = true
sinon je mets boolean DAY = false
. J'ai essayé la méthode aujourd'hui et hier, mais elle définit toujours le booléen sur faux.
De quoi ai-je besoin pour changer le fonctionnement de mon code? Vous trouverez le code ici.
Code
int day = Calendar.DAY_OF_WEEK;
ArrayList<Integer> daylist = new ArrayList<Integer>();
daylist.add(Calendar.MONDAY);
daylist.add(Calendar.TUESDAY);
daylist.add(Calendar.WEDNESDAY);
daylist.add(Calendar.THURSDAY);
daylist.add(Calendar.FRIDAY);
if (daylist.contains(day)){
DAY = true;
}else{
DAY = false;
}
Wow, c'est comme essayer de tuer un moustique avec une ogive thermo-nucléaire :-)
Java garantit (en 1.5) (inchangé jusqu'à 1.8 au moins) que les valeurs de SUNDAY
à SATURDAY
sont contiguës (1 à 7) il s'agit donc simplement de vérifier une plage.
Pourtant, DAY_OF_WEEK
n'est pas pas le jour de la semaine, c'est un numéro de champ (avec la valeur 7) à transmettre au getter à récupérer le jour de la semaine. La seule fois Calendar.DAY_OF_WEEK
lui-même correspondra à un jour réel sera le samedi.
Vous pouvez utiliser du code tel que:
Calendar myDate = Calendar.getInstance(); // set this up however you need it.
int dow = myDate.get (Calendar.DAY_OF_WEEK);
boolean isWeekday = ((dow >= Calendar.MONDAY) && (dow <= Calendar.FRIDAY));
Par la suite, isWeekday
sera vrai si et seulement si le jour de myDate
était du lundi au vendredi inclus.
int day = Calendar.DAY_OF_WEEK;
devrait plutôt être
Calendar cal; // The calendar object
....your other code for getting the date goes here....
int day = cal.get(Calendar.DAY_OF_WEEK);
Votre code actuel obtient juste la valeur de la constante Calendar.DAY_OF_WEEK
.
Cela devrait faire l'affaire pour vous, je suppose.
int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
DAY = true;
}else{
DAY = false;
}
Premier Calendar.DAY_OF_WEEK est un champ entier vous donnera toujours 7. Vous devez créer une instance d'un calendrier comme Calendar cal = Calendar.getInstance (); Par défaut, il vous donne la date actuelle dans le fuseau horaire actuel. Ensuite, vous pouvez appeler cal.get (Calendar.DAY_OF_WEEK); qui vous donnera n'importe quel jour entre dimanche et samedi
Maintenant, vous pouvez vérifier quelque chose comme ça
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
System.out.println("Weekend");
} else {
System.out.println("Weekday");
}
Vous pouvez appliquer cette logique à votre problème !!
int day = Calendar.DAY_OF_WEEK;
La logique est brisée ici. DAY_OF_WEEK est une constante identifiant le type de données que nous devons récupérer à partir d'une instance Calendar
.
La solution la plus simple à votre problème (depuis Calendar.FRIDAY> ...> Calendar.MONDAY) est
Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY)
// do something