Wie kann man den Wochentag bestimmen, indem man ein bestimmtes Datum in Java übergibt?

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie den Wochentag als Zahl und als Text aus einem Java-Datum extrahieren.

2. Problem

Geschäftslogik braucht oft den Wochentag. Warum? Zum einen unterscheiden sich Arbeitszeiten und Servicelevel zwischen Arbeitstagen und Wochenenden. Daher ist es für viele Systeme erforderlich, den Tag als Zahl zu ermitteln. Möglicherweise benötigen wir den Tag aber auch als Text für die Anzeige.

Wie extrahieren wir den Wochentag aus Daten in Java?

3. Lösung Mit java.util.Date

java.util.Date ist seit Java 1.0 die Java-Datumsklasse. Code, der mit Java Version 7 oder niedriger gestartet wurde, verwendet wahrscheinlich diese Klasse.

3.1. Wochentag als Zahl

Zuerst extrahieren wir den Tag als Zahl mit java.util.Calendar :

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

Die resultierende Anzahl reicht von 1 (Sonntag) bis 7 (Samstag) . Der Kalender definiert hierfür Konstanten: Calendar.SUNDAY - Calendar.SATURDAY .

3.2. Wochentag als Text

Jetzt extrahieren wir den Tag als Text . Wir übergeben ein Gebietsschema , um die Sprache zu bestimmen:

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

Dies gibt den ganzen Tag in Ihrer Sprache zurück , z. B. "Montag" auf Englisch oder "Montag" auf Deutsch.

4. Lösung Mit java.time.LocalDate

Java 8 hat die Behandlung von Datum und Uhrzeit überarbeitet und java.time.LocalDate für Datumsangaben eingeführt. Daher sollten Java-Projekte, die nur auf Java-Versionen 8 oder höher ausgeführt werden, diese Klasse verwenden!

4.1. Wochentag als Zahl

Das Extrahieren des Tages als Zahl ist jetzt trivial :

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

Die resultierende Zahl reicht immer noch von 1 bis 7. Aber diesmal ist Montag 1 und Sonntag 7 ! Der Wochentag hat eine eigene Aufzählung - DayOfWeek . Wie erwartet sind die Enum- Werte MONTAG - SONNTAG .

4.2. Wochentag als Text

Jetzt extrahieren wir den Tag erneut als Text. Wir übergeben auch ein Gebietsschema :

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

Genau wie bei java.util.Date wird der gesamte Tag in der ausgewählten Sprache zurückgegeben.

5. Schlussfolgerung

In diesem Artikel haben wir den Wochentag aus Java-Daten extrahiert. Wir haben gesehen, wie man mit java.util.Date und java.time.LocalDate sowohl eine Zahl als auch einen Text zurückgibt .

Wie immer ist der Code auf GitHub verfügbar.