EN · DE · RU · FR · ES

#1880: DateFormatType.java

projectforge-common/src/main/java/org/projectforge/common/DateFormatType.java Java-Enum — Paket org.projectforge.common, projectforge-common/src/main/java/org/projectforge/common/DateFormatType.java 99 Zeilen · 20 Code · 76 Kommentare · 3 leer
Aufzählung der Datums-/Zeitformat-Voreinstellungen, die in der gesamten Benutzeroberfläche und den Exportebenen von ProjectForge verwendet werden. Definiert 16 verschiedene Formatstufen – vom einfachen Datum ohne Jahr (DATE_WITHOUT_YEAR) bis hin zu vollständigen ISO-8601-Zeitstempeln (ISO_TIMESTAMP_MILLIS). Dient als deklarativer Formatkatalog – die tatsächlichen Formatmusterzeichenfolgen werden zur Laufzeit von DateHelper oder den Gebietsschemaeinstellungen des Benutzers aufgelöst, was eine gebietsschemabewusste Datumsformatierung ohne fest codierte Musterzeichenfolgen ermöglicht.

Architektur

Formatkategorien

Nur-Datums-Formate

Enum-KonstanteBeispielmusterAnwendungsfall
DATE_WITHOUT_YEARdd.MM. / MM/dd / dd/MMGeburtstage ohne Jahresangabe, Tag-Monats-Listen
DATEdd.MM.yyyy / MM/dd/yyyyAllgemeine Datumsanzeige, Datumsfelder in Formularen
DATE_WITH_DAY_NAMEE, dd.MM.yyyyKalenderansichten, Planungsseiten mit Wochentagsanzeige
DATE_SHORTdd.MM.yy / MM/dd/yyExcel-Exporte, kompakte Listenansichten
ISO_DATEyyyy-MM-ddDatenbankabfragen, API-Antworten, Datenaustausch

Datums-Zeit-Formate

Enum-KonstanteGenauigkeitAnwendungsfall
DATE_TIME_SHORT_SECONDSDATE_SHORT + HH:mm:ssKompakte Logs, Audit-Trail-Einträge
DATE_TIME_SHORT_MINUTESDATE_SHORT + HH:mmKalenderereigniszeiten, Besprechungspläne
DATE_TIME_MILLISDATE + HH:mm:ss.SSSPräzise Zeitstempel mit Millisekunden
DATE_TIME_SECONDSDATE + HH:mm:ssAllgemeine Zeitstempelanzeige, Audit-Logs
DATE_TIME_MINUTESDATE + HH:mmStundenzettel-Einträge, Projektzeiterfassung

Nur-Zeit-Formate

Enum-KonstanteMusterAnwendungsfall
TIME_OF_DAY_SECONDSHH:mm:ssDaueranzeigen, Stoppuhr-Ansichten
TIME_OF_DAY_MINUTESHH:mmZeiteingaben, Besprechungszeiten, Öffnungszeiten

ISO-8601-Zeitstempel-Formate

Enum-KonstanteMusterAnwendungsfall
ISO_TIMESTAMP_MILLISyyyy-MM-dd HH:mm:ss.SSSHochpräzise Protokollierung, Datenbank-Audit-Spalten
ISO_TIMESTAMP_SECONDSyyyy-MM-dd HH:mm:ssAPI-Antworten, JSON-Serialisierung, REST-Endpunkte
ISO_TIMESTAMP_MINUTESyyyy-MM-dd HH:mmKalenderexport (iCal), Planungssysteme

Spezialformat

Enum-KonstanteMusterAnwendungsfall
DAY_OF_WEEK_SHORTEE (Mo, Di, ...)Wochenköpfe in Kalenderansichten, Stundenzettel-Wochenübersicht

Gebietsschemabewusstsein

Die Javadoc-Kommentare für DATE und DATE_WITHOUT_YEAR zeigen mehrere Musterbeispiele ("dd.MM.", "MM/dd", "dd/MM"), was darauf hindeutet, dass diese Enum-Konstanten Formatabsichten und keine festen Muster darstellen. Die tatsächliche Musterzeichenfolge wird von DateHelper basierend auf dem Gebietsschema des Benutzers aufgelöst:

Dies ist ein kritisches Designmerkmal für die internationale Benutzerbasis von ProjectForge.

Excel-Export-Notation

Der Javadoc der DATE_SHORT-Konstante enthält Excel-spezifische Notationen: "DD.MM.YY", "MM/DD/YY", "DD/MM/YY". Dies deutet darauf hin, dass die DateFormatType-Konstanten auch vom Excel-Exportmodul (org.projectforge.business.excel) verwendet werden, das diese Enum-Werte auf Excel-Zellenformatzeichenfolgen abbildet – anders als die SimpleDateFormat-Muster von Java (Monat ist in Excel MM vs. MM in Java, aber es gibt Unterschiede in der Groß-/Kleinschreibung).

Beziehung zu DateHelper

Während diese Datei nur die Enum-Konstanten definiert, befindet sich die eigentliche Formatierungslogik in DateHelper (im selben Paket). DateHelper enthält wahrscheinlich eine Methode wie getFormat(DateFormatType, Locale), die jede Enum-Konstante einer gebietsschemaspezifischen DateFormat- oder SimpleDateFormat-Instanz zuordnet.

Entwurfsmuster: Enum als deklarativer Katalog

Dieses Enum folgt einem Muster, bei dem das Enum als deklarativer Katalog verfügbarer Optionen dient, während das tatsächliche Verhalten woanders (DateHelper) implementiert wird. Diese Trennung ermöglicht:

Die ISO-Zeitstempelformate verwenden ein Leerzeichen als Trennzeichen (yyyy-MM-dd HH:mm:ss) anstelle des ISO-8601-Standard-Trennzeichens T (yyyy-MM-ddTHH:mm:ss). Obwohl dies in Datenbank- und Anzeigekontexten üblich ist, ist es technisch gesehen keine strenge ISO-8601. Die Formatnamen suggerieren ISO-Konformität, aber die tatsächlichen Muster sind „ISO-ähnlich“.
Die 16 Formatkonstanten decken einen umfassenden Bereich von „kein Jahr“ bis „Millisekundengenauigkeit“ ab. Diese Granularität spiegelt die vielfältigen Anwendungsfälle von ProjectForge wider: Stundenzettelverwaltung (Minutengenauigkeit), Finanzberichte (Tagesgenauigkeit), Audit-Trails (Millisekundengenauigkeit), Kalenderansichten (Wochentag) und Datenbank-Migrationsverfolgung (ISO-Zeitstempel). Jedes Format erfüllt eine spezifische UX- oder Datenanforderung.

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f7ef41b8 Copyright 2021 -> 2022
ceb63e8a1 Quellcode-Kopf: (C) 2001-2021.
7c79f1922 Copyright des Quellkopfs -> 2020.
dd5ca38ac Copyright aller Java-Dateiköpfe aktualisiert oder erstellt.