Class DateUtil

java.lang.Object
de.willuhn.jameica.util.DateUtil

public class DateUtil extends Object
Hilfsklasse zum Parsen von Datumsangaben.
  • Field Details

    • DEFAULT_FORMAT

      public static volatile DateFormat DEFAULT_FORMAT
      Das Default-Dateformat von Jameica. Wird als DateTimeFormatter-Pattern über i18n angegeben. z. B. deutsch: dd.MM.uuuu / englisch: dd/MM/uuuu
    • SHORT_FORMAT

      public static volatile DateFormat SHORT_FORMAT
      Das Kurz-Dateformat von Jameica. Wie DEFAULT_FORMAT z. B. deutsch: dd.MM.uu / englisch: dd/MM/uu
  • Constructor Details

    • DateUtil

      public DateUtil()
  • Method Details

    • setLocaleForTesting

      public static void setLocaleForTesting(Locale locale, String defaultDatePattern, String shortDatePattern)
      Überschreibt das von der Config vorgegebene Locale (für Tests)
      Parameters:
      locale - Das Locale, das beim Parsen und Formatieren berücksichtigt wird
      defaultDatePattern - Das DateTimeFormatter-Pattern, das für die Standardformatierung verwendet wird
      shortDatePattern - Das DateTimeFormatter-Pattern, das für die kurze Formatierung verwendet wird
    • convert2Date

      public static String convert2Date(String text)
      Eingabehilfe für Datumsfelder.
      Wie parseUserInput(String, DateTimeFormatter), nur dass ein String zurückgegeben wird. Verwendet immer das DEFAULT_FORMAT.
      Parameters:
      text - zu parsender Text.
      Returns:
      das vervollstaendigte Datum oder der Originalwert, wenn es nicht geparst werden konnter.
    • parseUserInput

      public static Optional<LocalDate> parseUserInput(String userInput, DateTimeFormatter customFormatter)
      Eingabehilfe für Datumsfelder.
      Unterstützte Formate:
      - Das per defaultFormatter angegebene Format
      - d | dd | ddMM | ddMMyy | ddMMyyyy
      - dd. | dd.MM. | dd.MM.yy | dd.MM.yyyy (dd und MM auch einstellig)
      - dd/ | dd/MM/ | dd/MM/yy | dd/MM/yyyy (dd und MM auch einstellig)
      - "h" (heute) | "t" (today)
      - +D | -D (heute plus/minus D Tage)
      - ++M | --M (heute plus/minus M Monate)
      Das Datum muss immer in der Reihenfolge "Tag - Monat - Jahr" angegeben werden (auch im customFormatter).
      Parameters:
      userInput - Eingabetext
      customFormatter - Formatter, den das Datumsfeld nutzt, um das Datum anzuzeigen
      Returns:
      das geparste Datum als Optional
    • createDateTimeFormatter

      public static DateTimeFormatter createDateTimeFormatter(DateFormat dFormat)
      Versucht aus einem java.text.DateFormat einen java.time.format.DateTimeFormatter zu erstellen.
      Parameters:
      dFormat - Das DateFormat. Eine Konvertierung ist nur möglich, wenn es instanceof java.text.SimpleDateFormat ist. Andernfalls wird das DEFAULT_FORMAT verwendet.
      Returns:
      der DateTimeFormatter
    • localDate2Date

      public static Date localDate2Date(LocalDate localDate)
      Konvertiert ein java.time.LocalDate zu einem java.util.Date
      Parameters:
      localDate - das LocalDate
      Returns:
      das Date
    • addMonthsMaintainingEndOfMonth

      public static LocalDate addMonthsMaintainingEndOfMonth(LocalDate date, long months)
      Fügt eine Anzahl von Monaten zu einem LocalDate hinzu. Ist das Eingabedatum der letzte Tag eines Monats, wird das Ausgabedatum ebenfalls der letzte Tag des Monats sein.
      Beispiele:
      30.04. + 1 Monat = 31.05.
      31.05. - 1 Monat = 30.04.
      Parameters:
      date - das Eingabedatum
      months - die Anzahl der Monate, die hinzugefügt werden soll (auch negativ möglich)
      Returns:
      das Ausgabedatum
    • getDatePositions

      public static DateUtil.DatePositions getDatePositions(DateTimeFormatter dtFormatter)
      Gibt Index und Länge von Tag, Monat und Jahr in einem formatierten Datums-String für den angegebenen DateTimeFormatter zurück.
      Limitationen:
      - Der DateTimeFormatter darf Tag/Monat/Jahr nur als Zahlen erzeugen, keine Monatsnamen o. Ä.
      - Tag- und Monatsfelder müssen 2-stellig sein
      - Die Reihenfolge Tag - Monat - Jahr muss eingehalten werden, siehe auch: parseUserInput(String, DateTimeFormatter)
      Parameters:
      dtFormatter - der DateTimeFormatter
      Returns:
      alle Positionen für diesen DateTimeFormatter
    • startOfDay

      public static Date startOfDay(Date date)
      Resettet die Uhrzeit eines Datums.
      Parameters:
      date - das Datum.
      Returns:
      das neue Datum.
    • endOfDay

      public static Date endOfDay(Date date)
      Setzt die Uhrzeit eines Datums auf 23:59:59.999.
      Parameters:
      date - das Datum.
      Returns:
      das neue Datum.