c # und Datum Kultur Probleme
-
03-07-2019 - |
Frage
Ich habe eine asp.net app geschrieben und einer meiner Postback-Routinen speichert einfach Benutzer übermittelten Formulardaten an einen SQL 2005 db. Alle laufen sehr gut auf meiner Entwicklung Maschine, aber wenn ich auf die Live-Website bereitstellen Ich erhalte ungültig stammt aus meinem Parse-Datum checker.
Im Grunde ist es erwartet ein amerikanisches Datumsformat auf der Live-Maschine, aber das ist nicht das, was ich will. Der Benutzer muss in der Lage sein in TT / MM / yyyy Format eingeben. So ein gültiges Datum wie 21.10.2009 gibt Fehler auf Live-Server aber nicht auf meiner Dev-Maschine. Unten ist der Code, der die Ausnahme auslöst.
DateTime dt;
dt = DateTime.Parse(sdate);
//sdate in GB dd/MM/yyyy format
Ist es möglich, die Parsing-Routine zu zwingen, das Datum in TT / MM / yyyy Format zu erwarten?
Lösung
Sie wie folgt aus:
System.Globalization.CultureInfo cultureinfo =
new System.Globalization.CultureInfo("en-gb");
DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);
Andere Tipps
Sie können mit DateTime.ParseExact angeben ein erwartetes Format.
Eine andere Möglichkeit ist es, die Kultur, die Sie in der Datei web.config verwenden möchten angeben:
<system.web>
...
<globalization
culture="da-DK"
uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
/>
</system.web>
Ja, ParseExact wird tun, wie von Matt erwähnt.
Der Code wäre so etwas wie:
dt = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);