Package de.willuhn.jameica.util
Class DateUtil
java.lang.Object
de.willuhn.jameica.util.DateUtil
Hilfsklasse zum Parsen von Datumsangaben.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic DateFormat
Das Default-Dateformat von Jameica.static DateFormat
Das Kurz-Dateformat von Jameica. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic LocalDate
addMonthsMaintainingEndOfMonth
(LocalDate date, long months) Fügt eine Anzahl von Monaten zu einem LocalDate hinzu.static String
convert2Date
(String text) Eingabehilfe für Datumsfelder.
WieparseUserInput(String, DateTimeFormatter)
, nur dass ein String zurückgegeben wird.static DateTimeFormatter
createDateTimeFormatter
(DateFormat dFormat) Versucht aus einem java.text.DateFormat einen java.time.format.DateTimeFormatter zu erstellen.static Date
Setzt die Uhrzeit eines Datums auf 23:59:59.999.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.static Date
localDate2Date
(LocalDate localDate) Konvertiert ein java.time.LocalDate zu einem java.util.DateparseUserInput
(String userInput, DateTimeFormatter customFormatter) Eingabehilfe für Datumsfelder.
Unterstützte Formate:
- Das per defaultFormatter angegebene Format
- d | dd | ddMM | ddMMyy | ddMMyyyy
- dd.static void
setLocaleForTesting
(Locale locale, String defaultDatePattern, String shortDatePattern) Überschreibt das von der Config vorgegebene Locale (für Tests)static Date
startOfDay
(Date date) Resettet die Uhrzeit eines Datums.
-
Field Details
-
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
Das Kurz-Dateformat von Jameica. WieDEFAULT_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 wirddefaultDatePattern
- Das DateTimeFormatter-Pattern, das für die Standardformatierung verwendet wirdshortDatePattern
- Das DateTimeFormatter-Pattern, das für die kurze Formatierung verwendet wird
-
convert2Date
Eingabehilfe für Datumsfelder.
WieparseUserInput(String, DateTimeFormatter)
, nur dass ein String zurückgegeben wird. Verwendet immer dasDEFAULT_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
- EingabetextcustomFormatter
- Formatter, den das Datumsfeld nutzt, um das Datum anzuzeigen- Returns:
- das geparste Datum als Optional
-
createDateTimeFormatter
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 dasDEFAULT_FORMAT
verwendet.- Returns:
- der DateTimeFormatter
-
localDate2Date
Konvertiert ein java.time.LocalDate zu einem java.util.Date- Parameters:
localDate
- das LocalDate- Returns:
- das Date
-
addMonthsMaintainingEndOfMonth
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 Eingabedatummonths
- die Anzahl der Monate, die hinzugefügt werden soll (auch negativ möglich)- Returns:
- das Ausgabedatum
-
getDatePositions
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
Resettet die Uhrzeit eines Datums.- Parameters:
date
- das Datum.- Returns:
- das neue Datum.
-
endOfDay
Setzt die Uhrzeit eines Datums auf 23:59:59.999.- Parameters:
date
- das Datum.- Returns:
- das neue Datum.
-