Das Format, wie Sie das Datum in der Datenbank sehen, ist normalerweise irrelevant, da es in .Net als DateTime
- nicht als string
übergeben werden sollte. (Wenn Sie es als varchar
in der Datenbank speichern, müssen Sie ein größeres Problem.)
ASP.Net WebAPI den Wert im Format von ISO8601 und RFC3339 definiert zurückkehrt. Dies ist eine gute Sache, da es ein anerkanntes maschinenlesbares Format ist. Sie wollen es wahrscheinlich nicht ändern.
Wenn Sie es wirklich ändern möchten, müssen Sie ein benutzerdefiniertes JSON.Net JsonConverter
implementieren, das von DateTimeConverterBase
abgeleitet wird. Dies wird diskutiert here und here.
Aber stattdessen sollten Sie überlegen, wie Sie das tatsächliche Ergebnis in Ihrer Client-Anwendung verwenden. Sie haben jQuery erwähnt, daher nehme ich an, dass Ihr Kunde JavaScript ist. In vielen Browsern, die Sie der ISO8601-Wert haben, ist bereits vom Date
Konstruktor JavaScript erkannt, so Sie in der Lage sein könnten, dies nur zu tun:
var dt = new Date("2011-09-07T14:43:22.520");
Aber diese won't work in all browsers. Und Date
hat nicht viel Flexibilität beim Formatieren. Stattdessen sollten Sie eine Bibliothek wie moment.js in Betracht ziehen. Mit dem im Ort, können Sie dies tun:
var m = moment("2011-09-07T14:43:22.520");
var s = m.format("YYYY-MM-DD HH:mm:ss"); // output: "2011-09-07 14:43:22"
Bitte beachten Sie, dass der Format-String hier moment.js entspricht, nicht zu .NET. Es gibt Unterschiede in der Groß-/Kleinschreibung. Einzelheiten finden Sie unter the moment.js documentation.
Eine andere Sache - da der Wert, den Sie nicht zur Verfügung gestellt nicht hat entweder ein Z
am Ende, noch hat eine Offset wie -07:00
, dann gehe ich davon kam es aus einem DateTime
whos .Kind
Wert DateTimeKind.Unspecified
ist. Sie sollten sich darüber im Klaren sein, dass es keine Informationen darüber gibt, welche Zeitzone dargestellt wird, wenn diese in JavaScript (oder anderswo) gesendet wird. JavaScript übernimmt die lokale Zeitzone des Browsers.
Wenn das nicht das ist, was Sie beabsichtigt haben, müssen Sie UTC-Werte in Ihrer Datenbank speichern und sicherstellen, dass sie DateTimeKind.Utc
haben, damit sie am Ende mit einem Z
serialisiert werden. JavaScript wird dies auf die Zeitzone des Browsers normalisieren, aber Sie werden immer noch über denselben Zeitpunkt sprechen.
Alternativ können Sie einen -Typ verwenden, der mit dem spezifischen Offset serialisiert wird. JavaScript wird dies weiterhin auf die Zeitzone des Benutzers normalisieren.
'" 2011-09-07 14: 43: 22.520 "' ist gut für Chrome '" 2011-09-07T14: 43: 22.520 "wirft einen Fehler in FF => Datum {Ungültiges Datum}' versuchen Sie 'new Date (datestring)' und Sie werden sehen – Jaider