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 DateFormatDas Default-Dateformat von Jameica.static DateFormatDas Kurz-Dateformat von Jameica. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic LocalDateaddMonthsMaintainingEndOfMonth(LocalDate date, long months) Fügt eine Anzahl von Monaten zu einem LocalDate hinzu.static Stringconvert2Date(String text) Eingabehilfe für Datumsfelder.
WieparseUserInput(String, DateTimeFormatter), nur dass ein String zurückgegeben wird.static DateTimeFormattercreateDateTimeFormatter(DateFormat dFormat) Versucht aus einem java.text.DateFormat einen java.time.format.DateTimeFormatter zu erstellen.static DateSetzt die Uhrzeit eines Datums auf 23:59:59.999.static DateUtil.DatePositionsgetDatePositions(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 DatelocalDate2Date(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 voidsetLocaleForTesting(Locale locale, String defaultDatePattern, String shortDatePattern) Überschreibt das von der Config vorgegebene Locale (für Tests)static DatestartOfDay(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_FORMATz. 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_FORMATverwendet.- Returns:
- der DateTimeFormatter
-
localDate2Date
-
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
-
endOfDay
-