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.
Formatkategorien
Nur-Datums-Formate
| Enum-Konstante | Beispielmuster | Anwendungsfall |
DATE_WITHOUT_YEAR | dd.MM. / MM/dd / dd/MM | Geburtstage ohne Jahresangabe, Tag-Monats-Listen |
DATE | dd.MM.yyyy / MM/dd/yyyy | Allgemeine Datumsanzeige, Datumsfelder in Formularen |
DATE_WITH_DAY_NAME | E, dd.MM.yyyy | Kalenderansichten, Planungsseiten mit Wochentagsanzeige |
DATE_SHORT | dd.MM.yy / MM/dd/yy | Excel-Exporte, kompakte Listenansichten |
ISO_DATE | yyyy-MM-dd | Datenbankabfragen, API-Antworten, Datenaustausch |
Datums-Zeit-Formate
| Enum-Konstante | Genauigkeit | Anwendungsfall |
DATE_TIME_SHORT_SECONDS | DATE_SHORT + HH:mm:ss | Kompakte Logs, Audit-Trail-Einträge |
DATE_TIME_SHORT_MINUTES | DATE_SHORT + HH:mm | Kalenderereigniszeiten, Besprechungspläne |
DATE_TIME_MILLIS | DATE + HH:mm:ss.SSS | Präzise Zeitstempel mit Millisekunden |
DATE_TIME_SECONDS | DATE + HH:mm:ss | Allgemeine Zeitstempelanzeige, Audit-Logs |
DATE_TIME_MINUTES | DATE + HH:mm | Stundenzettel-Einträge, Projektzeiterfassung |
Nur-Zeit-Formate
| Enum-Konstante | Muster | Anwendungsfall |
TIME_OF_DAY_SECONDS | HH:mm:ss | Daueranzeigen, Stoppuhr-Ansichten |
TIME_OF_DAY_MINUTES | HH:mm | Zeiteingaben, Besprechungszeiten, Öffnungszeiten |
ISO-8601-Zeitstempel-Formate
| Enum-Konstante | Muster | Anwendungsfall |
ISO_TIMESTAMP_MILLIS | yyyy-MM-dd HH:mm:ss.SSS | Hochpräzise Protokollierung, Datenbank-Audit-Spalten |
ISO_TIMESTAMP_SECONDS | yyyy-MM-dd HH:mm:ss | API-Antworten, JSON-Serialisierung, REST-Endpunkte |
ISO_TIMESTAMP_MINUTES | yyyy-MM-dd HH:mm | Kalenderexport (iCal), Planungssysteme |
Spezialformat
| Enum-Konstante | Muster | Anwendungsfall |
DAY_OF_WEEK_SHORT | EE (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:
- Deutsches Gebietsschema →
dd.MM.yyyy
- US-Gebietsschema →
MM/dd/yyyy
- UK-Gebietsschema →
dd/MM/yyyy
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:
- UI-Komponenten können eine Dropdown-Liste aller verfügbaren Formate anbieten (Enum-Iteration)
- Geschäftslogik kann Formate anhand des semantischen Namens statt der Musterzeichenfolge referenzieren
- Zentrale Gebietsschemaauflösung in DateHelper ohne Duplizierung der Formatlogik im Enum
- Serialisierung von Formateinstellungen (z. B. das bevorzugte Datumsformat des Benutzers, gespeichert als Enum-Name in der Datenbank)
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.