Klasse DateUtils

java.lang.Object
de.svws_nrw.core.utils.DateUtils

public final class DateUtils extends Object
Diese Klasse bietet hilfreiche statische Methoden für Datumsberechnungen.
  • Feldübersicht

    Felder
    Modifizierer und Typ
    Feld
    Beschreibung
    static final long
    Die Anzahl der Tage zwischen dem Jahr 0 und dem Jahr 1.1.1970
    static final long
    Die Anzahl an Tagen in 100 Jahren, nicht der Speziallfall, wenn ein Jahrhundert mit einem Schaltjahr beginnt
    static final long
    Die Anzahl an Tagen in 4 Jahren
    static final long
    Die Anzahl an Tagen in 400 Jahren
    static final long
    Die Anzahl an Tagen in einem Schaltjahr
    static final long
    Die Anzahl an Tagen in einem Jahr, welches kein Schaltjahr ist
    static 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 Typ
    Methode
    Beschreibung
    static @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[]
    Liefert das Schuljahr und das Halbjahr zu einem bestimmten Datum.
    static @NotNull String
    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
    Liefert das vom Format "2006-08-31" ins Format "31.
    static boolean
    Liefert TRUE, falls das Jahr ungültig ist.
    static int
    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
    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
    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-Darstellung uuuu-MM-dd'T'HH:mm:ss.SSS als String zurück.

    Von Klasse geerbte Methoden java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Felddetails

    • DAYS_FROM_0_TO_1970

      public static final long DAYS_FROM_0_TO_1970
      Die 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_YEARS
      Die Anzahl an Tagen in 400 Jahren
      Siehe auch:
    • DAYS_PER_100_YEARS

      public static final long DAYS_PER_100_YEARS
      Die 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_YEARS
      Die Anzahl an Tagen in 4 Jahren
      Siehe auch:
    • DAYS_PER_YEAR

      public static final long DAYS_PER_YEAR
      Die Anzahl an Tagen in einem Jahr, welches kein Schaltjahr ist
      Siehe auch:
    • DAYS_PER_LEAP_YEAR

      public static final long DAYS_PER_LEAP_YEAR
      Die Anzahl an Tagen in einem Schaltjahr
      Siehe auch:
    • MIN_GUELTIGES_JAHR

      public static final int MIN_GUELTIGES_JAHR
      Das kleinste gültige Jahr für das alle Datumsberechnungen geprüft wurden.
      Siehe auch:
    • MAX_GUELTIGES_JAHR

      public static final int MAX_GUELTIGES_JAHR
      Das 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

      @NotNull public static @NotNull String gibDatumDesTagesOfJahr(int jahr, int tagImJahr)
      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

      @NotNull public static @NotNull String gibDatumGermanFormat(@NotNull @NotNull String datumISO8601)
      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

      public static int gibMinutenOfZeitAsString(@NotNull @NotNull String zeit)
      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

      @NotNull public static @NotNull String gibZeitStringOfMinuten(int minuten)
      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

      @NotNull public static @NotNull String getStringOfUhrzeitFromMinuten(int minuten)
      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

      public static int gibKwDesDatumsISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static int gibKwJahrDesDatumsISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static int gibWochentagDesDatumsISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static int getSchuljahrFromDateISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static int getHalbjahrFromDateISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static int[] getSchuljahrUndHalbjahrFromDateISO8601(@NotNull @NotNull String datumISO8601)
      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

      public static String toISO8601(long time)
      Gibt den übergebenen Unix-Zeitstempel (Millisekunden seit dem 1.1.1970 um 0 Uhr) in der ISO-8601-Darstellung uuuu-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.