Wie kann ich einen Unix-Timestamp in DateTime und umgekehrt konvertieren?
Gibt es in diesem Beispiel-code, aber dann fängt es an zu sprechen Millisekunde /Nanosekunde Probleme.
Die gleiche Frage ist auf der MSDN -Sekunden seit der Unix-Epoche in C#.
Dies ist, was ich habe, so weit:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
InformationsquelleAutor der Frage Mark Ingram | 2008-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was Sie brauchen:
Oder, für Java (was ist anders, weil der timestamp ist in Millisekunden, nicht Sekunden):
InformationsquelleAutor der Antwort ScottCher
Den die Letzte version von .NET (v4.6) hat Hinzugefügt integrierte Unterstützung für die Unix-Zeit-Konvertierungen. Gehören beide zu und von der Unix-Zeit vertreten, indem Sie entweder in Sekunden oder Millisekunden.
DateTimeOffset
:DateTimeOffset
zu Unix-Zeit in Sekunden:DateTimeOffset
:DateTimeOffset
zu Unix-Zeit in Millisekunden:Hinweis: Diese Methoden zum konvertieren von UTC
DateTimeOffset
. Um eineDateTime
Darstellung verwenden Sie einfach dieDateTimeOffset.UtcDateTime
oderDateTimeOffset.LocalDateTime
Eigenschaften:InformationsquelleAutor der Antwort i3arnon
DateTime zu UNIX timestamp:
InformationsquelleAutor der Antwort Dmitry Fedorkov
"UTC ändert sich nicht mit der Saison ändern, aber die lokale Zeit oder die in der bürgerlichen Zeit ändern kann, wenn ein Zeit-zone zuständig, beobachtet daylight saving time (summer time). Zum Beispiel, UTC-5 Stunden Voraus (das ist, später am Tag als die lokale Uhrzeit), an der Ostküste der Vereinigten Staaten während des Winters, aber 4 Stunden Voraus, während der Sommerzeit ist zu beachten."
Also das ist mein code:
InformationsquelleAutor der Antwort gl051
Vorsichtig sein, wenn Sie brauchen, Präzision höher als Millisekunden!
.NET (v4.6) Methoden (z.B. FromUnixTimeMilliseconds) nicht diese Präzision.
AddSeconds und AddMilliseconds auch schneiden Sie die Mikrosekunden in die Doppel.
Diese Versionen besitzen eine hohe Präzision:
Unix -> DateTime
DateTime -> Unix
InformationsquelleAutor der Antwort Felix Keil
Sehen IdentityModel.EpochTimeExtensions
InformationsquelleAutor der Antwort orad
Ergänzen ScottCher Antwort, vor kurzem fand ich mich der lästigen Szenario, dass sowohl die Sekunden und die Millisekunden UNIX-Zeitstempel beliebig gemischt zusammen in ein input-Daten gesetzt. Der folgende code scheint das zu handhaben, gut:
InformationsquelleAutor der Antwort Chris Thoman
Unix-Zeit-Konvertierung ist neu .NET Framework 4.6.
Können Sie jetzt leicht konvertieren von Datum-und Zeit-Werte, um oder aus .NET Framework-Typen und Unix-Zeit. Dies kann zum Beispiel notwendig sein, wenn die Umwandlung von Zeit-Werten zwischen einen JavaScript-client und .NET-server. Die folgenden APIs wurden Hinzugefügt, um die DateTimeOffset-Struktur:
InformationsquelleAutor der Antwort Fred
Fand ich die richtige Antwort nur durch den Vergleich der Konvertierung zu 1/1/1970 w/o die lokale Zeiteinstellung;
InformationsquelleAutor der Antwort n8CodeGuru
Natürlich kann man
unixEpoch
eine Globale statische, so dass es muss nur einmal in Ihrem Projekt, und man kannAddSeconds
wenn die UNIX-Zeit in Sekunden.In die andere Richtung gehen:
Abschneiden zu Int64 und/oder verwenden
TotalSeconds
als nötig.InformationsquelleAutor der Antwort Hot Licks
Einem Unix-tick ist 1 Sekunde (wenn ich mich gut erinnern), und ein .NET tick 100 Nanosekunden.
Wenn du schon auf Probleme mit Nanosekunden, möchten Sie vielleicht zu versuchen, mit AddTick(10000000 * - Wert).
InformationsquelleAutor der Antwort Luk
Ich brauchte, um zu konvertieren eine struct timeval (Sekunden, Mikrosekunden) mit
UNIX time
zuDateTime
ohne an Präzision zu verlieren und nicht gefunden haben, hier eine Antwort, so dachte ich, ich könnte nur hinzufügen, mine:InformationsquelleAutor der Antwort i3arnon
können Sie anrufen UnixTime.UnixTimeToDateTime(double, datetime))
InformationsquelleAutor der Antwort madan
Für .NET 4.6 und höher:
InformationsquelleAutor der Antwort superlogical