Comment vérifier si c'est samedi/dimanche?
Ce que ce code n'est d'imprimer les dates de la semaine en cours, du lundi au vendredi. Il fonctionne très bien, mais je veux vous demander quelque chose d'autre: Si aujourd'hui on est samedi ou dimanche, je veux qu'elle affiche la semaine prochaine. Comment dois-je faire?
Voici mon code de travail jusqu'à présent (merci à StackOverflow!!):
//Get calendar set to current date and time
Calendar c = Calendar.getInstance();
//Set the calendar to monday of the current week
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
//Print dates of the current week starting on Monday to Friday
DateFormat df = new SimpleDateFormat("EEE dd/MM/yyyy");
for (int i = 0; i <= 4; i++) {
System.out.println(df.format(c.getTime()));
c.add(Calendar.DATE, 1);
}
Merci beaucoup! J'apprécie vraiment que j'ai été la recherche de la solution pendant des heures...
Vous devez vous connecter pour publier un commentaire.
Sortie
Si vous voulez être mignon, vous pouvez remplacer le if/then/else avec
mais je voulais vraiment quelque chose de facile à comprendre et à lire.
tl;dr
Code de base concept:
java.temps
La façon moderne est à la java.les classes de temps.
La
DayOfWeek
enum fournit sept objets, du lundi au dimanche.La
LocalDate
classe représente une date uniquement de la valeur, sans le temps de la journée et sans fuseau horaire.Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Définir le week-end comme un ensemble de
DayOfWeek
objets. Notez queEnumSet
est particulièrement rapide et de faible capacité de mémoire de mise en œuvre deSet
conçu pour tenirEnum
des objets tels que desDayOfWeek
.Nous pouvons maintenant tester si aujourd'hui est un jour de semaine ou un week-end.
La Question dit, nous voulons aller au début de la semaine prochaine, si c'est un week-end. Pour ce faire, utilisez un
TemporalAdjuster
qui fournit pour les classes qui peuvent manipuler la date et l'heure d'objets. En java.temps, nous avons des objets immuables. Cela signifie que nous produisons de nouvelles instances sur la base des valeurs à l'intérieur d'un objet existant plutôt que de le modifier ("muter") l'original. LeTemporalAdjusters
classe (notez le pluriel "s") fournit plusieurs sous la main implémentations deTemporalAdjuster
y comprisnext( DayOfWeek )
.Nous soft-code de la durée de la semaine dans le cas de notre définition de week-end ne change jamais.
Voir code en direct en IdeOne.com.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers java.temps.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.