Hallo Erik,
Zusammengefasst willst du folgende Daten zu einem Datum speichern:
* Kalender (Julianisch, Gregorianisch, Chinesisch, Hebräisch, Islamisch, Maya, whatever)
* Genauigkeit des Datums (vor, nach, ca., genau, evtl. auch zwischen)
* Das Datum an sich (Tag, Monat, Jahr, Ära)
Die entsprechende Benutzereingabe würde ich so realisieren:
1. Die Angabe des Kalenders würde ich über ein Auswahlfeld machen, da das Programm mit Daten aus ihm unbekannten Kalendern wohl kaum rechnen kann ;-)
2. Auch für die Genauigkeit bietet sich natürlich eine Auswahlliste oder Checkboxen an.
3. Das ist das schwierige, da diese Angabe sehr vom verwendeten Kalender abhängt. Ära wäre beim Chinesischen oder Japanischen Kalender die Äranamen der Kaiser, beim Julianischen bzw. Gregorianischen Kalender v.Chr. oder n.Chr. und bei den Maya ist das Ganze wieder komplett anders.
Eine Möglichkeit zur Lösung des Problems wäre die Umrechnung aller Daten in einen gemeinsamen Kalender vor der Speicherung. Das wirft aber auch Probleme auf, wenn z.B. nur das Jahr im Islamischen Kalender bekannt ist. Wegen des unterschiedlichen Jahrensbeginns würde ein z.B. in den Gregorianischen Kalender umgerechnetes Datum vom der ursprünglichen Angabe abweichen.
Man könnte zwar auch das Datum als String in einem Kalenderspezifischen Format abspeichern, aber wie du selbst schon gesagt hast, wird dann das Rechnen und Abfragen der Daten sehr kompliziert.
Ich fürchte, dass es dafür kein Patentrezept gibt und du dir einen Kompromiss suchen musst, der bei deiner spezifischen Anwendung am wenigsten Probleme bereitet. Tut mir leid, wenn ich dir nicht helfen konnte.
Schöne Grüße,
Johannes
WM-Tippspiel: http://zeller-johannes.de/wmtipp/
ie:% fl:( br:< va:| ls:[ fo:) rl:) n4:? ss:| de:] js:| ch:} sh:) mo:| zu:)