Umgang Datetime Datentyp zwischen Javascript und WebApi 2

8

Ich würde gerne wissen, ob das Folgende die richtige Methode ist, um Datetime-Datentyp in WebApi 2, Javascript und Datenbank zu behandeln.

DateTime von Javascript zu WebApi:

%Vor%

DateTime von WebApi nach Javascript:

%Vor%

WebApi:

  

Eingehendes Datum

  • nichts tun, speichern Sie einfach die datestring zurückgegeben in der Datenbankspalte mit dem Datentyp datetime
  

Das Datum von der Datenbank und das Rückgabedatum zum Client erhalten:

  • keine Datetime-Manipulation (einfach wie im WebApi Json Serializer ex: 2015-10-23T18: 30: 00) zurückgeben. Der Client würde die UTC-Datetime automatisch in lokale Datetime
  • umwandeln
Shyamal Parikh 26.10.2015, 07:54
quelle

1 Antwort

8

Ja, wenn Sie keine Informationen über Benutzerzeitzone usw. verarbeiten möchten, ist dies ein akzeptabler Weg. Stellen Sie sicher, dass Sie jedes Mal, wenn Sie ein Datum vom Server für einen Vergleich oder etwas anderes erstellt haben, die c # DateTime.UtcNow verwenden möchten Methode. Ich denke, eine "globale UTC-Konvention" zu haben ist eine ziemlich sichere und gute Lösung, aber sie hat einige Grenzen.

Wenn Sie beispielsweise alle Benutzer, die sich in verschiedenen Zeitzonen befinden, um 09:00 Uhr (in jedem Land des Benutzers) warnen möchten, ist es unmöglich zu wissen, wann für jeden Benutzer "09:00" angezeigt wird.

Eine Möglichkeit, dies zu lösen (und das ist die, die ich bevorzuge), ist, die Zeitzoneninformationen jedes Benutzers einzeln in der Datenbank zu speichern, und jedes Mal, wenn Sie einen Vergleich durchführen möchten, konvertieren Sie einfach die Zeit.

%Vor%

Alternativ können Sie, wenn Sie alle Zeitzoneninformationen auf dem Server speichern möchten, Folgendes tun:

Senden Sie Ihr Datum von JavaScript an den Server im folgenden Format: "2014-02-01T09: 28: 56.321-10: 00" ISO 8601 unterstützt auch Zeitzonen, indem das Z durch den + oder - Wert für den Zeitzonenversatz ersetzt wird.

Deklarieren Sie Ihre WEB-API 2-Datumstypen mit dem "DateTimeOffset" -Typ.

Speichern Sie abschließend Ihre Daten in der Datenbank mit dem "datetimeoffset" -Typ.

Auf diese Weise haben Sie jederzeit auf dem Server oder in der Datenbank alle Informationen über die Zeit und die Zeitzone des Benutzers.

Sie finden diesen Artikel nützlich

    
Anestis Kivranoglou 26.10.2015, 09:21
quelle