2016-11-03 8 views
0

auf Kultur je ich eine Methode zu entwickeln, die ich UNIX-Zeitstempel und Kultur erhalten:Convert UNIX Epoch zu Datetime

public DateTime unixEpochToDateTime(long unixTimeStamp, string culture) { 
    ... 
} 

Aufrufbeispiel:

DateTime t = unixEpochToDateTime(1478181983, "es-ES"); 

ich zwischen vielen dieser UTC-Zeit konvertieren Kulturen, ohne zu verwenden TimeZone.CurrentTimeZone, da diese Methode im Server ausgeführt wird und die Serverkultur immer gleich ist.

Zum Beispiel, wenn zwei Benutzer meine Methode in EE.UU und in Großbritannien anfordern, bekomme ich die gleiche UTC?

Ich bin sehr verwirrt.

+0

Wie bin ich bei Ihrer Frage (im Moment). Sie haben einen Unix-Timestamp, kann ich davon ausgehen, dass der Timestamp auch aus UTC stammt oder ist ein Offset mit diesem Timestamp hinterlegt? – Igor

+0

@Igor Timestamp ist UTC. Vielen Dank! –

+0

Warum erstellen Sie dann nicht die DateTime-Instanz in der utc? Auch die Datetime hat eine Eigenschaft für [Kind] (https://msdn.microsoft.com/en-us/library/shx7s921 (v = vs.110) .aspx), die Sie festlegen können, um Ihnen UTC (Es gibt auch eine Überladung im Konstruktor, wo Sie es auch einstellen können). Siehe statische Methode 'DateTime.SpecifyKind'. – Igor

Antwort

0

Ich denke, dass Sie nodatime versuchen können. Es hat viele nützliche Methoden.

+0

Ich werde die Dokumentation darüber lesen . Vielen Dank –

0

Problem gelöst ...

Wenn .NET keinen Mechanismus zur Verfügung stellen, weil es unmöglich ist, die Zeitdifferenz UTC auf Kultur zu bestimmen.

Grundsätzlich, weil eine Kultur verschiedene Zeitzonen haben kann.

Kultur "ES-ES" zum Beispiel, hat 2 Zonen: GTM + 0 für die Kanarischen Inseln und UTC + 1 für die Iberische Halbinsel.