Comment déterminer le jour de la semaine en passant une date spécifique en Java?

1. Vue d'ensemble

Dans ce court tutoriel, nous verrons comment extraire le jour de la semaine sous forme de nombre et de texte à partir d'une date Java.

2. Problème

La logique métier a souvent besoin du jour de la semaine. Pourquoi? D'une part, les heures de travail et les niveaux de service diffèrent entre les jours ouvrables et les week-ends. Par conséquent, obtenir le jour sous forme de nombre est nécessaire pour de nombreux systèmes. Mais nous pouvons également avoir besoin du jour comme texte à afficher.

Alors, comment extraire le jour de la semaine des dates en Java?

3. Solution avec java.util.Date

java.util.Date est la classe de date Java depuis Java 1.0. Le code qui a commencé avec la version 7 de Java ou une version antérieure utilise probablement cette classe.

3.1. Jour de la semaine sous forme de nombre

Tout d'abord, nous extrayons le jour sous forme de nombre à l' aide de java.util.Calendar :

public static int getDayNumberOld(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); }

Le nombre résultant varie de 1 (dimanche) à 7 (samedi) . Le calendrier définit les constantes pour cela: Calendrier.SUNDAY - Calendar.SATURDAY .

3.2. Jour de la semaine sous forme de texte

Maintenant, nous extrayons le jour sous forme de texte . Nous passons dans un Locale pour déterminer la langue:

public static String getDayStringOld(Date date, Locale locale) { DateFormat formatter = new SimpleDateFormat("EEEE", locale); return formatter.format(date); }

Cela renvoie la journée entière dans votre langue , comme «Lundi» en anglais ou «Montag» en allemand.

4. Solution avec java.time.LocalDate

Java 8 a remanié la gestion de la date et de l'heure et introduit java.time.LocalDate pour les dates. Par conséquent, les projets Java qui ne s'exécutent que sur les versions Java 8 ou supérieures doivent utiliser cette classe!

4.1. Jour de la semaine sous forme de nombre

Extraire le jour sous forme de nombre est désormais trivial :

public static int getDayNumberNew(LocalDate date) { DayOfWeek day = date.getDayOfWeek(); return day.getValue(); }

Le nombre qui en résulte varie toujours de 1 à 7. Mais cette fois, lundi est 1 et dimanche est 7 ! Le jour de la semaine a sa propre énumération - DayOfWeek . Comme prévu, les valeurs d' énumération sont LUNDI - DIMANCHE .

4.2. Jour de la semaine sous forme de texte

Maintenant, nous extrayons à nouveau le jour sous forme de texte. Nous passons également dans un Locale :

public static String getDayStringNew(LocalDate date, Locale locale) { DayOfWeek day = date.getDayOfWeek(); return day.getDisplayName(TextStyle.FULL, locale); }

Tout comme avec java.util.Date , cela renvoie la journée entière dans la langue choisie.

5. Conclusion

Dans cet article, nous avons extrait le jour de la semaine des dates Java. Nous avons vu comment renvoyer à la fois un nombre et un texte en utilisant java.util.Date et java.time.LocalDate .

Comme toujours, le code est disponible sur sur GitHub.