Laden...

Mehre Cultures in einem Form - Datumsformat

Erstellt von kfj vor 15 Jahren Letzter Beitrag vor 15 Jahren 755 Views
K
kfj Themenstarter:in
30 Beiträge seit 2007
vor 15 Jahren
Mehre Cultures in einem Form - Datumsformat

Ich überarbeite gerade eine Webseite, die in deutsch und englisch existiert und irgend wann einmal noch in andere Sprachen übersetzt werden soll.
Jetzt habe ich in den Logs festgestellt, dass es häufiger Probleme mit dem 3-geteilten Control zur Eingabe des Datums gibt.

Den CustomValidator habe ich jetzt umgebaut, so dass falsche Daten wie 31. Februar etc. nicht mehr eingegeben werden können.

Wenn ich einmal dran bin, überlege ich allerdings gerade noch, ob der nachfolgende Code nicht auch unter bestimmten Umständen zu Errors führen könnte:



 if (CultureInfo.CurrentCulture.Name.ToString().IndexOf("de") > -1)
                {
                    geburtsdatum = DateTime.Parse(this.DropDownList_Geburtstag.SelectedValue.ToString() + "." + this.DropDownList_Geburtsmonat.SelectedValue.ToString() + "." + this.DropDownList_Geburtsjahr.SelectedValue.ToString());
                }

                else
                {

                    geburtsdatum = DateTime.Parse(this.DropDownList_Geburtsjahr.SelectedValue.ToString() + "." + this.DropDownList_Geburtsmonat.SelectedValue.ToString() + "." + this.DropDownList_Geburtstag.SelectedValue.ToString());
                }

...

ObjectDataSource1.InsertParameters["Geburtstag"].DefaultValue = geburtsdatum.ToString();


Ich habe wenig Erfahrung mit den Datumsformaten und das musste damals huschhusch gehen. Gibt es unser komisches Format auch irgendwo ausserhalb Culture="de"?
Gibt es neben dem deutschen und dem englischen noch weitere Formate, an die ich vielleicht gerade nicht denke ?
Kann ich das Schreiben des Datums in die Datenbank nicht universeller und/oder eleganter lösen, so dass es in einer n-sprachigen Umgebung auch funktioniert?

B
114 Beiträge seit 2007
vor 15 Jahren

Also 1. ist SelectedValue bereits vom Typ String.
2. musst du das Datum nicht zusammenbasteln und parsen.
Beim Erstellen eines Datums mit new gibt es die Überladung mit den Parametern Tag, Monat, Jahr.
Du musst also nur deine SelectedValue jeweils in Int parsen und übergeben.
Am Ende hast du ein Datumsobjekt dem die Culture vollkommen gleich ist.
Erst bei der Ausgabe des Datums mit ToString() gibt es ein paar Überladungen die das Ausgabeformat regeln. Eine Überladung erlaubt es zB eine CultureInfo zu übergeben.

K
kfj Themenstarter:in
30 Beiträge seit 2007
vor 15 Jahren

Dankeschön. Klappt perfekt!
Da habe ich jetzt bei einer Sache gleich mehreres hinzugelernt...