2017-12-21 19 views
0

Vielleicht verstehe ich nicht die 'ToUniversalTime()' Methode in C#, aber ich möchte nehmen meine Benutzer lokale Zeit 'EventDateTime' und Holen Sie sich die universelle Zeit in meiner Tabelle zu speichernSpeichern der universellen Zeit in C# für einen Benutzer lokalen Datum Zeit in Server in azurblauen übergeben

Ich bin in einem Datum Zeit (z. B. ein Datum Zeit für Pacific Standard Time PST) und ich möchte die Weltzeit erhalten, aber mein Ergebnis ist das gleiche. Muss ich den Zeitzonen-Offset in Javascript bekommen und das irgendwie zuerst nutzen?

Hier ist, wie ich testen und diese in Azure läuft

eventDateTime hier vom Benutzer übergeben wird, es ist 2017.12.21 @ 5.15 und t1 die gleiche wie eventdatetime ist. T2, T3, T4 ist 2017.12.21 @ 23.01.57

var t1 = eventDateTime.ToUniversalTime(); 
var t2 = DateTime.UtcNow; 
var t3 = DateTime.Now.ToUniversalTime(); 
var t4 = DateTime.Now.ToLocalTime(); 
+1

Warum nicht ein UT übergeben? – Plutonix

+0

was meinst du? meinst du das Datum in JavaScript in eine universelle Zeit umwandeln und dann das einreichen und das benutzen? – user1186050

+2

sollten Sie Ihr Bestes tun, damit DateTime so bald wie möglich in UTC arbeitet. –

Antwort

0

Das Verhalten von DateTime.ToUniversalTime auf der Datetime der Kind-Eigenschaft abhängig ist. Von MSDN:

Ab .NET Framework, Version 2.0, wird der Wert durch die ToUniversalTime Methode zurückgegeben wird von der Kind-Eigenschaft des aktuellen Datetime-Objekt bestimmt. Die folgende Tabelle beschreibt die möglichen Ergebnisse.

DateTimeKind.Utc: Es wird keine Konvertierung durchgeführt.

DateTimeKind.Local: Das aktuelle DateTime-Objekt wird in UTC konvertiert.

DateTimeKind.Unspecified: Das aktuelle DateTime-Objekt wird als lokale Zeit angenommen und die Konvertierung wird so durchgeführt, als wäre Kind Local.

Welche Art von DateTime erhalten Sie? Wenn Sie eine DateTime in einem Webdienst analysieren, wurde sie in einem Format übertragen, in dem Zeitzoneninformationen wie ISO 8601 beibehalten werden?

0

Angenommen, Sie verwenden Newtonsoft, wird Newtonsoft zu Ihrer DateTime-Eigenschaft als UTC deserialisieren. Sie müssen also bei der Deserialisierung nichts tun. Wenn Ihre DateTime von SQL Server abgerufen wird, wird ihre DateTimeKind nicht angegeben. Sie müssen es einstellen.

eventDateTime = DateTime.SpecifyKind(eventDateTime, DateTimeKind.Utc); 

Und dann wird Newtonsoft serialisiert es als UTC und Javascript-Client der Benutzer die Zeit in Ihrem Benutzer richtige Zeitzone haben.