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?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top