Hi Erik,
Zusätzlich kann es ja auch vorkommen, dass unterschiedliche Kalender zum Einsatz kommen ... sprich: im asiatischen Raum gibt es eine andere Zeitrechnung als im europäischen Raum. Eine einheitliche Behandlung würde voraussetzen, dass alle Daten in einen Kalender umgerechnet werden (ok, damit kann ich leben) oder aber eine Angabe zum verwendeten Kalender gespeichert wird.
ich würde bei dieser Aufgabenstellung auf jeden Fall das Datum in einem einheitlichen Format speichern, zusätzlich aber über ein Flag angeben, in welchem Kalender/Datumsformat das Datum ursprünglich vorlag. Das einheitliche Speicherformat sorgt dafür, dass du die Datumswerte leicht vergleichen, sortieren, oder gar Intervalle berechnen kannst.
Für mich würde sich als standardisiertes Speicherformat das Julianische Datum anbieten, das vor allem in der Astronomie verwendet wird. Es speichert die Anzahl der vergangenen Tage seit 4713 v.Chr. als Vorkommaanteil, die Uhrzeit (wenn man das nutzen möchte) als Nachkommaanteil. Dadurch ist die Berechnung von Zeiträumen sehr einfach, sogar den Wochentag kriegst du relativ einfach raus.
Natürlich bedeutet das auch, dass du eine Reihe von Umwandlungsfunktionen schreiben müsstest, also vom Julianischen zum Gregorianischen Kalender(westliche Welt), zum Jüdischen, zum Mohammedanischen, zum Chinesischen Kalender, etc. und jeweils zurück.
Im schlimmsten Fall hieße das, dass mehrere Geburtsdaten für eine Person richtig sein können.
Oder du bietest bei der Anzeige/Eingabe des Datums ein Auswahlfeld (select) oder Radiobuttons an, mit denen das Format ausgewählt wird. Dann kann der Anwender entscheiden, in welchem Datumsformat er den Eintrag sehen möchte. Defaultformat wäre sinnvollerweise dasjenige, in dem der Eintrag eingegeben wurde (daher das eingangs erwähnte Flag fürs Format).
Viel Spaß und Erfolg beim weiteren Brainstorming,
Martin
TEAM: Toll, Ein Anderer Macht's.