2016-08-29 2 views
0

Ich habe eine wep-API in Azure gehostet, die .NET Core ist. Es ist eine einfache CRUD API für jetzt. Ich habe ein interessantes Problem, dass ich den Grund nicht finden oder verstehen konnte.Der Zeitversatzwert einer Datetime fehlt in der Azure Web API-Anwendung.

In meiner API gibt es eine DateTime Eigenschaft wie üblich. Wenn ich Daten nach api poste, verschwindet der Zeitversatz auf der Serverseite.

"Datetime": "2016-08-29T05: 13: 21,931 + 03: 00" die 03: 00 verwandelt sich in 00:00

Kann jemand den Grund und die Lösung erklären?

{ 
    "content":"Test Data", 
    "location":{ 
     "name":"Some Location", 
     "address":"", 
     "latitude":41.0920448, 
     "longitude":28.9444847 
    }, 
    "owner":{ 
     "userName":"Some User", 
     "name":null, 
     "registrationType":0, 
     "profilePictureURL":null 
    }, 
    "dateTime":"2016-08-29T05:13:21.931+03:00", 
    "createTime":"2016-08-29T05:13:21.7791051+00:00", 
    "rankingPoint":0.0 
} 
+0

Veröffentlichen Sie Datetime von der Clientseite oder wird Ihre Datetime direkt von SQL Server oder Azure Server abgerufen? – dotnetstep

+0

Ich poste vom Client wie oben – Arda

+0

Konvertiert es sofort oder speichern Sie das in SQL-Server, wenn Sie es dann zurück zu 00:00 abrufen? – dotnetstep

Antwort

1

1.Zuerst läuft Ihr azur-Service auf 00:00 Timezone.

  1. Wenn Sie sich die DateTime-Struktur ansehen, hat sie eine spezielle Eigenschaft namens Kind. Bei der Serialisierung/Deserialisierung wird diese Eigenschaft berücksichtigt.

    DateTime dt = DateTime.Now; // dt.Kind (Lokal, Utc usw.).

    Die Art der Serialisierung funktioniert diese Eigenschaft auf serverseitige Json Serialization Einstellung. Diese Option ist auch keine Hilfe.

3. Einfache und beste Lösung gefunden ist Datetime statt Datetime zu verwenden.

+0

Vielen Dank ... das ist eine legitime Lösung für meinen Fall. – Arda

Verwandte Themen