Package de.svws_nrw.core.utils
Klasse DateUtils
java.lang.Object
de.svws_nrw.core.utils.DateUtils
Diese Klasse bietet hilfreiche statische Methoden für Datumsberechnungen.
-
Feldübersicht
Modifizierer und TypFeldBeschreibungstatic final long
Die Anzahl der Tage zwischen dem Jahr 0 und dem Jahr 1.1.1970static final long
Die Anzahl an Tagen in 100 Jahren, nicht der Speziallfall, wenn ein Jahrhundert mit einem Schaltjahr beginntstatic final long
Die Anzahl an Tagen in 4 Jahrenstatic final long
Die Anzahl an Tagen in 400 Jahrenstatic final long
Die Anzahl an Tagen in einem Schaltjahrstatic final long
Die Anzahl an Tagen in einem Jahr, welches kein Schaltjahr iststatic final int
Das größte gültige Jahr für das alle Datumsberechnungen geprüft wurden.static final int
Das kleinste gültige Jahr für das alle Datumsberechnungen geprüft wurden. -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungstatic @jakarta.validation.constraints.NotNull int[]
extractFromDateISO8601
(@NotNull String datumISO8601) Liefert ein aus dem Datum extrahiertes int[] mit dem Inhalt [jahr, monat, tagImMonat, tagInWoche, tagImJahr, kalenderwoche, kalenderwochenjahr].
Gültige Werte sind im Bereich:
Index 0: jahr = 1900 bis 2900
Index 1: monat = 1 (Januar) bis 12 (Dezember)
Index 2: tagImMonat = 1 bis 31
Index 3: tagInWoche = 1 (Montag) bis 7 (Sonntag)
Index 4: tagImJahr = 1 bis 365 oder 366
Index 5: kalenderwoche = 1 bis 52 oder 53
Index 6: kalenderwochenjahr = 1900 bis 2900 (das Jahr der Kalenderwoche)
Auszug aus Wikipedia: Da ISO 8601 den Montag als ersten Tag der Woche definiert, ist dies somit die erste Woche, von der mehr Tage (mindestens vier) auf das neue Jahr fallen als auf das alte Jahr.static int
getHalbjahrFromDateISO8601
(@NotNull String datumISO8601) Liefert das Halbjahr zu einem bestimmten Datum.static int
getSchuljahrFromDateISO8601
(@NotNull String datumISO8601) Liefert das Schuljahr zu einem bestimmten Datum.static int[]
getSchuljahrUndHalbjahrFromDateISO8601
(@NotNull String datumISO8601) Liefert das Schuljahr und das Halbjahr zu einem bestimmten Datum.static @NotNull String
getStringOfUhrzeitFromMinuten
(int minuten) Liefert anhand der Minuten eine String-Repräsentation der Uhrzeit im Format "hh:mm".static @NotNull String
gibDatumDesMontagsOfJahrAndKalenderwoche
(int kalenderwochenjahr, int kalenderwoche) Liefert das Datum im ISO8601-Format (uuuu-MM-dd)des Montags der Kalenderwoche des Jahres.static @NotNull String
gibDatumDesSonntagsOfJahrAndKalenderwoche
(int kalenderwochenjahr, int kalenderwoche) Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Sonntags der Kalenderwoche des Jahres.static @NotNull String
gibDatumDesTagesOfJahr
(int jahr, int tagImJahr) Liefert das Datum im ISO8601-Format (uuuu-MM-dd) eines Tages im Jahres.static @NotNull String
gibDatumDesWochentagsOfJahrAndKalenderwoche
(int kalenderwochenjahr, int kalenderwoche, int wochentag) Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Wochentags (aus dem Intervall 1 bis 7) der Kalenderwoche des Kalenderwochenjahres.static @NotNull String
gibDatumGermanFormat
(@NotNull String datumISO8601) Liefert das nach "DIN 5008 optional" konvertierte Datumsformat, z.B. 2023-02-28 zu 28.02.2023.static @NotNull String
gibDatumGermanFormatAusgeschrieben
(@NotNull String datumISO8601) Liefert das vom Format "2006-08-31" ins Format "31.static boolean
gibIstJahrUngueltig
(int jahr) Liefert TRUE, falls das Jahr ungültig ist.static int
gibKalenderwochenOfJahr
(int jahr) Liefert die Anzahl an Kalenderwochen des Jahres (52 oder 53) nach ISO8601.static int
gibKwDesDatumsISO8601
(@NotNull String datumISO8601) Liefert die Kalenderwoche zu einem bestimmten Datum.static int
gibKwJahrDesDatumsISO8601
(@NotNull String datumISO8601) Liefert das Kalenderwochenjahr zu einem bestimmten Datum.static int
gibMinutenOfZeitAsString
(@NotNull String zeit) Liefert die Minuten einer Zeitangabe im Format hh:mm oder hh.mm.static @NotNull String[]
gibTageAlsDatumZwischen
(@NotNull String startDate, @NotNull String endDate) Liefert die Tage zwischen zwei Datumsangaben als String-Array im ISO8601-Format.static int
gibTageOfJahr
(int jahr) Liefert die Anzahl an Tagen des Jahres (365 oder 366).static int
gibWochentagDesDatumsISO8601
(@NotNull String datumISO8601) Liefert den Wochentag (Mo=1...So=7) zu einem bestimmten Datum.static @NotNull String
gibZeitStringOfMinuten
(int minuten) Liefert den ZeitString im Format hh:mm zu einer vorgegebenen Minutenanzahl.static String
toISO8601
(long time) Gibt den übergebenen Unix-Zeitstempel (Millisekunden seit dem 1.1.1970 um 0 Uhr) in der ISO-8601-Darstellunguuuu-MM-dd'T'HH:mm:ss.SSS
als String zurück.
-
Felddetails
-
DAYS_FROM_0_TO_1970
public static final long DAYS_FROM_0_TO_1970Die Anzahl der Tage zwischen dem Jahr 0 und dem Jahr 1.1.1970- Siehe auch:
-
DAYS_PER_400_YEARS
public static final long DAYS_PER_400_YEARSDie Anzahl an Tagen in 400 Jahren- Siehe auch:
-
DAYS_PER_100_YEARS
public static final long DAYS_PER_100_YEARSDie Anzahl an Tagen in 100 Jahren, nicht der Speziallfall, wenn ein Jahrhundert mit einem Schaltjahr beginnt- Siehe auch:
-
DAYS_PER_4_YEARS
public static final long DAYS_PER_4_YEARSDie Anzahl an Tagen in 4 Jahren- Siehe auch:
-
DAYS_PER_YEAR
public static final long DAYS_PER_YEARDie Anzahl an Tagen in einem Jahr, welches kein Schaltjahr ist- Siehe auch:
-
DAYS_PER_LEAP_YEAR
public static final long DAYS_PER_LEAP_YEARDie Anzahl an Tagen in einem Schaltjahr- Siehe auch:
-
MIN_GUELTIGES_JAHR
public static final int MIN_GUELTIGES_JAHRDas kleinste gültige Jahr für das alle Datumsberechnungen geprüft wurden.- Siehe auch:
-
MAX_GUELTIGES_JAHR
public static final int MAX_GUELTIGES_JAHRDas größte gültige Jahr für das alle Datumsberechnungen geprüft wurden.- Siehe auch:
-
-
Methodendetails
-
extractFromDateISO8601
@NotNull public static @jakarta.validation.constraints.NotNull int[] extractFromDateISO8601(@NotNull @NotNull String datumISO8601) Liefert ein aus dem Datum extrahiertes int[] mit dem Inhalt [jahr, monat, tagImMonat, tagInWoche, tagImJahr, kalenderwoche, kalenderwochenjahr].
Gültige Werte sind im Bereich:
Index 0: jahr = 1900 bis 2900
Index 1: monat = 1 (Januar) bis 12 (Dezember)
Index 2: tagImMonat = 1 bis 31
Index 3: tagInWoche = 1 (Montag) bis 7 (Sonntag)
Index 4: tagImJahr = 1 bis 365 oder 366
Index 5: kalenderwoche = 1 bis 52 oder 53
Index 6: kalenderwochenjahr = 1900 bis 2900 (das Jahr der Kalenderwoche)
Auszug aus Wikipedia: Da ISO 8601 den Montag als ersten Tag der Woche definiert, ist dies somit die erste Woche, von der mehr Tage (mindestens vier) auf das neue Jahr fallen als auf das alte Jahr. Äquivalent hierzu sind die folgenden Definitionen:
- jene Woche, die den 4. Januar enthält
- jene Woche, die den 1. Januar enthält, falls dieser ein Montag, Dienstag, Mittwoch oder Donnerstag ist, sonst die darauf folgende Woche- Parameter:
datumISO8601
- Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- ein aus dem Datum extrahiertes int[] mit dem Inhalt [jahr, monat, tagImMonat, tagInWoche, tagImJahr, kalenderwoche, kalenderwochen, kalenderwochenjahr]..
- Siehe auch:
-
gibKalenderwochenOfJahr
public static int gibKalenderwochenOfJahr(int jahr) Liefert die Anzahl an Kalenderwochen des Jahres (52 oder 53) nach ISO8601.- Parameter:
jahr
- Das Jahr.- Gibt zurück:
- die Anzahl an Kalenderwochen des Jahres (52 oder 53) nach ISO8601.
-
gibTageOfJahr
public static int gibTageOfJahr(int jahr) Liefert die Anzahl an Tagen des Jahres (365 oder 366).- Parameter:
jahr
- Das Jahr.- Gibt zurück:
- die Anzahl an Tagen des Jahres (365 oder 366).
-
gibDatumDesWochentagsOfJahrAndKalenderwoche
@NotNull public static @NotNull String gibDatumDesWochentagsOfJahrAndKalenderwoche(int kalenderwochenjahr, int kalenderwoche, int wochentag) Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Wochentags (aus dem Intervall 1 bis 7) der Kalenderwoche des Kalenderwochenjahres.
Hinweis: Der Montag kann bei der 1. KW im Vorjahr liegen!- Parameter:
kalenderwochenjahr
- Das Jahr der Kalenderwoche.kalenderwoche
- Die Kalenderwoche.wochentag
- Der Wochentag aus dem Intervall 1 bis 7.- Gibt zurück:
- das Datum im ISO8601-Format (uuuu-MM-dd) des Wochentags (aus dem Intervall 1 bis 7) der Kalenderwoche des Kalenderwochenjahres.
-
gibDatumDesMontagsOfJahrAndKalenderwoche
@NotNull public static @NotNull String gibDatumDesMontagsOfJahrAndKalenderwoche(int kalenderwochenjahr, int kalenderwoche) Liefert das Datum im ISO8601-Format (uuuu-MM-dd)des Montags der Kalenderwoche des Jahres.
Hinweis: Der Montag kann bei der 1. KW im Vorjahr liegen!
Beispiel 1: Der Montag der 1. KW im 2023 ist der 02.01.2023
Beispiel 2: Der Montag der 1. KW im 2024 ist der 01.01.2024
Beispiel 3: Der Montag der 1. KW im 2025 ist der 30.12.2023!- Parameter:
kalenderwochenjahr
- Das Jahr der Kalenderwoche.kalenderwoche
- Die Kalenderwoche.- Gibt zurück:
- das Datum im ISO8601-Format (uuuu-MM-dd) des Montags der Kalenderwoche des Jahres.
-
gibDatumDesSonntagsOfJahrAndKalenderwoche
@NotNull public static @NotNull String gibDatumDesSonntagsOfJahrAndKalenderwoche(int kalenderwochenjahr, int kalenderwoche) Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Sonntags der Kalenderwoche des Jahres.
Hinweis: Der Sonntag kann bei der 52/53. KW im Folgejahr liegen!
Beispiel 1: Der Sonntag der 52. KW im 2023 ist der 31.12.2023
Beispiel 2: Der Sonntag der 52. KW im 2024 ist der 29.12.2024
Beispiel 3: Der Sonntag der 52. KW im 2025 ist der 28.12.2025
Beispiel 4: Der Sonntag der 53. KW im 2026 ist der 03.01.2027!
Beispiel 5: Der Sonntag der 52. KW im 2027 ist der 02.01.2028!- Parameter:
kalenderwochenjahr
- Das Jahr der Kalenderwoche.kalenderwoche
- Die Kalenderwoche.- Gibt zurück:
- das Datum im ISO8601-Format (uuuu-MM-dd) des Sonntags der Kalenderwoche des Jahres.
-
gibDatumDesTagesOfJahr
Liefert das Datum im ISO8601-Format (uuuu-MM-dd) eines Tages im Jahres.
Hinweis: Die Methode erlaubt Werte die zum Vorjahr oder Folgejahr führen.- Parameter:
jahr
- Das Jahr.tagImJahr
- Der jeweilige Tag im Jahr. Meistens zwischen 1 und 365, aber nicht zwingend!- Gibt zurück:
- das Datum im ISO8601-Format (uuuu-MM-dd) eines Tages im Jahres.
-
gibIstJahrUngueltig
public static boolean gibIstJahrUngueltig(int jahr) Liefert TRUE, falls das Jahr ungültig ist.- Parameter:
jahr
- Das Jahr.- Gibt zurück:
- TRUE, falls das Jahr ungültig ist.
-
gibDatumGermanFormat
Liefert das nach "DIN 5008 optional" konvertierte Datumsformat, z.B. 2023-02-28 zu 28.02.2023.- Parameter:
datumISO8601
- Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2023-02-28).- Gibt zurück:
- das nach "DIN 5008 optional" konvertierte Datumsformat, z.B. 2023-02-28 zu 28.02.2023.
-
gibDatumGermanFormatAusgeschrieben
@NotNull public static @NotNull String gibDatumGermanFormatAusgeschrieben(@NotNull @NotNull String datumISO8601) Liefert das vom Format "2006-08-31" ins Format "31. August 2006" konvertierte Datum.- Parameter:
datumISO8601
- Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2023-02-28).- Gibt zurück:
- das vom Format "2006-08-31" ins Format "31. August 2006" konvertierte Datum.
-
gibMinutenOfZeitAsString
Liefert die Minuten einer Zeitangabe im Format hh:mm oder hh.mm.
hh muss ein- oder zweistellig sein, im Bereich 0 bis 23.
mm muss ein- oder zweistellig sein, im Bereich 0 bis 59.- Parameter:
zeit
- Die Zeitangabe im Format hh:mm oder hh.mm.- Gibt zurück:
- die Minuten einer Zeitangabe im Format hh:mm oder hh.mm.
-
gibZeitStringOfMinuten
Liefert den ZeitString im Format hh:mm zu einer vorgegebenen Minutenanzahl.
Gültige Werte sind im Bereich 0 bis 24*60=1440 (exklusive).- Parameter:
minuten
- Die Anzahl der Minuten.- Gibt zurück:
- den ZeitString im Format hh:mm zu einer vorgegebenen Minutenanzahl.
-
getStringOfUhrzeitFromMinuten
Liefert anhand der Minuten eine String-Repräsentation der Uhrzeit im Format "hh:mm".
Beispiel: 1000 Minuten --> "16:40"- Parameter:
minuten
- Die vergangenen Minuten seit 0 Uhr.- Gibt zurück:
- anhand der Minuten eine String-Repräsentation der Uhrzeit im Format "hh:mm".
-
gibKwDesDatumsISO8601
Liefert die Kalenderwoche zu einem bestimmten Datum.- Parameter:
datumISO8601
- Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- die Kalenderwoche zu einem bestimmten Datum.
-
gibKwJahrDesDatumsISO8601
Liefert das Kalenderwochenjahr zu einem bestimmten Datum.- Parameter:
datumISO8601
- das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- die Kalenderwochenjahr zu einem bestimmten Datum.
-
gibWochentagDesDatumsISO8601
Liefert den Wochentag (Mo=1...So=7) zu einem bestimmten Datum.- Parameter:
datumISO8601
- das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- den Wochentag (Mo=1...So=7) zu einem bestimmten Datum.
-
getSchuljahrFromDateISO8601
Liefert das Schuljahr zu einem bestimmten Datum. Dabei wird von dem Stichtag des 1.8. für den Beginn des neuen Schuljahres ausgegangen. Da das Schuljahr immer in zwei Kalenderjahren liegt, wird immer das erste Kalenderjahr als Schuljahr angegeben.- Parameter:
datumISO8601
- das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- das Schuljahr
-
getHalbjahrFromDateISO8601
Liefert das Halbjahr zu einem bestimmten Datum. Dabei wird zum Einen von dem Stichtag des 1.8. für den Beginn des neuen Schuljahres ausgegangen und zum Anderen wird vereinfacht (!) vom 1.2. als Beginn des neuen Halbjahres ausgegangen.- Parameter:
datumISO8601
- das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- das Halbjahr anhand des vereinfachten Kriteriums
-
getSchuljahrUndHalbjahrFromDateISO8601
Liefert das Schuljahr und das Halbjahr zu einem bestimmten Datum. Dabei wird zum Einen von dem Stichtag des 1.8. für den Beginn des neuen Schuljahres ausgegangen und zum Anderen wird vereinfacht (!) vom 1.2. als Beginn des neuen Halbjahres ausgegangen.- Parameter:
datumISO8601
- das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- das Schuljahr (Index 0) und das Halbjahr (Index 1) anhand des vereinfachten Kriteriums
-
toISO8601
Gibt den übergebenen Unix-Zeitstempel (Millisekunden seit dem 1.1.1970 um 0 Uhr) in der ISO-8601-Darstellunguuuu-MM-dd'T'HH:mm:ss.SSS
als String zurück.- Parameter:
time
- der Zeitstempel- Gibt zurück:
- der String mit der ISO-8601-Darstellung des Zeitstempels
-
gibTageAlsDatumZwischen
@NotNull public static @NotNull String[] gibTageAlsDatumZwischen(@NotNull @NotNull String startDate, @NotNull @NotNull String endDate) Liefert die Tage zwischen zwei Datumsangaben als String-Array im ISO8601-Format.- Parameter:
startDate
- das Startdatum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).endDate
- das Enddatum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).- Gibt zurück:
- die Tage zwischen zwei Datumsangaben als String-Array im ISO8601-Format.
-