Habe ich umzusehen, stackoverflow, und sah sogar bei einigen der vorgeschlagenen Fragen und keiner scheint zu beantworten, wie man einen unix-timestamp in C#?
DateTime.Now ersetzt werden kann, mit jedem DateTime Objekt, dass Sie möchten, um den unix-timestamp für.
Kommentieren im Namen von @wdhough. "Diese Antwort hat die Begrenzung mit der Begrenzung des Int32-das ist, glaube ich, und 2.147.483.647. Nach onlineconversion.com/unix_time.htm dies entspricht einer Zeit von Tue, 19 Jan 2038 03:14:07 GMT ich denke jede alternative Nummer Typ, double, long, etc letztendlich eine Grenze zu, aber ich dachte es erwähnenswert. Ich wähle lange hier, wie ich wollte, eine ganze Zahl. Hoffe, das hilft" Der unix-timestamp ist traditionell ein 32-bit-integer, und hat eine Reihe von '1970-01-01 00:00:01' UTC bis '2038-01-19 03:14:07' UTC. Verrückt, dass die UNIX-Zeit-Konvertierung ist nicht in der standard-Bibliothek als Teil der DateTime. Oder unter Verwendung der integer-arythmetic: DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).Ticks / TimeSpan.TicksPerSecond; Die abgezogen datetime muss nicht UTC?
Dies ist eine Instanz-Methode, so dass Sie erwartet werden, rufen Sie es über eine Instanz des DateTimeOffset. Sie können auch die cast, jede Instanz von DateTime, obwohl hüten Sie sich vor der timezone.
Gut. Über seine Zeit Zum Glück gibt es eine Int64 - durch die Zeit, rollt über, wir würden nicht über die Jahre auf der Erde mehr für fehlende Erde. Für alle anderen Fragen, können Sie sich den aktuellen timestamp mit DateTimeOffset.Now.ToUnixTimeSeconds() Wortspiel beabsichtigt? Sie können die UTC unixtimestamp mit: DateTimeOffset.UtcNow.ToUnixTimeSeconds()
Fehler für die zweite Lösung: konvertieren Kann Quelle Typ 'double' - Ziel Typ 'long'. unixTime sollte ein Doppel Die zweite Probe ist fixiert new DateTime(1970, 1, 1) schafft eine Zeit mit unbestimmten Kind Eigenschaft. Was Sie wirklich wollen zu new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) wirklich richtig Danke, es funktioniert 100%
Abschneiden .TotalSeconds ist wichtig, da es definiert als the value of the current System.TimeSpan structure expressed in whole fractional seconds.
Und wie wäre es mit einer Erweiterung für DateTime? Die zweite ist wohl eher verwirrend, dass es sich lohnt, bis Eigentum-Erweiterungen vorhanden sind.
///<summary>///Converts a given DateTime into a Unix timestamp///</summary>///<param name="value">Any DateTime</param>///<returns>The given DateTime in Unix timestamp format</returns>publicstaticintToUnixTimestamp(thisDateTime value){return(int)Math.Truncate((value.ToUniversalTime().Subtract(newDateTime(1970,1,1))).TotalSeconds);}///<summary>///Gets a Unix timestamp representing the current moment///</summary>///<param name="ignored">Parameter ignored</param>///<returns>Now expressed as a Unix timestamp</returns>publicstaticintUnixTimestamp(thisDateTime ignored){return(int)Math.Truncate((DateTime.UtcNow.Subtract(newDateTime(1970,1,1))).TotalSeconds);}
Nicht, dass das, was der cast auf int funktioniert schon? - Erweiterung die Methode ist eindeutig der Weg, dies zu tun ordentlich. Dies ist eine ausgezeichnete, ausgereifte Antwort - und ich verstehe nicht, warum es so wenige Stimmen. Ziemlich sicher, dass Robba ist richtig - casting die Ausgabe als (int) schneidet die Folge. (Wörtlich ignorieren die Nachkommastellen des double). (dies DateTime ignoriert) ist sehr, sehr irreführend
Beim subtrahieren 1970 von der aktuellen Zeit, sich bewusst sein, dass die Zeitspanne an, die meisten haben oft eine nicht-null-Millisekunden Bereich. Wenn Sie aus irgendeinem Grund daran interessiert sind, in den Millisekunden, dies im Auge behalten.
Hier ist, was ich getan habe um dieses Problem.
DateTime now =UtcNow();//milliseconds Not included.DateTime nowToTheSecond =newDateTime(now.Year,now.Month,now.Day,now.Hour,now.Minute,now.Second);TimeSpan span =(date -newDateTime(1970,1,1,0,0,0,0));Assert.That(span.Milliseconds,Is.EqualTo(0));//passes.
Erhalten Sie einen unix-timestamp in C# durch die Verwendung von DateTime.UtcNow und nach Abzug der epoc Zeit 1970-01-01.
z.B.
DateTime.Now
ersetzt werden kann, mit jedemDateTime
Objekt, dass Sie möchten, um den unix-timestamp für.Der unix-timestamp ist traditionell ein 32-bit-integer, und hat eine Reihe von '1970-01-01 00:00:01' UTC bis '2038-01-19 03:14:07' UTC.
Verrückt, dass die UNIX-Zeit-Konvertierung ist nicht in der standard-Bibliothek als Teil der DateTime.
Oder unter Verwendung der integer-arythmetic:
DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).Ticks / TimeSpan.TicksPerSecond;
Die abgezogen datetime muss nicht UTC?
InformationsquelleAutor bizzehdee
Ab .NET 4.6, es ist
DateTimeOffset.ToUnixTimeSeconds()
.Dies ist eine Instanz-Methode, so dass Sie erwartet werden, rufen Sie es über eine Instanz des
DateTimeOffset
. Sie können auch die cast, jede Instanz vonDateTime
, obwohl hüten Sie sich vor der timezone.Zu Holen Sie sich die aktuellen timestamp:
Um den timestamp aus aus einem
DateTime
:Zum Glück gibt es eine
Int64
- durch die Zeit, rollt über, wir würden nicht über die Jahre auf der Erde mehr für fehlende Erde.Für alle anderen Fragen, können Sie sich den aktuellen timestamp mit
DateTimeOffset.Now.ToUnixTimeSeconds()
Wortspiel beabsichtigt?
Sie können die UTC unixtimestamp mit: DateTimeOffset.UtcNow.ToUnixTimeSeconds()
InformationsquelleAutor Bob
Können Sie auch Zecken. Ich bin der Codierung für Windows Mobile-also nicht den vollen Satz von Methoden. "TotalSeconds ist mir nicht verfügbar.
oder
unixTime sollte ein Doppel
Die zweite Probe ist fixiert
new DateTime(1970, 1, 1)
schafft eine Zeit mit unbestimmtenKind
Eigenschaft. Was Sie wirklich wollen zunew DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
wirklich richtigDanke, es funktioniert 100%
InformationsquelleAutor Dave Hindle
Dies ist, was ich verwenden:
Beachten Sie, dass diese Methode zurückkehren wird, die Zeit wie die Coordinated Universal Time (UTC).
InformationsquelleAutor Bartłomiej Mucha
Abschneiden
.TotalSeconds
ist wichtig, da es definiert alsthe value of the current System.TimeSpan structure expressed in whole fractional seconds.
Und wie wäre es mit einer Erweiterung für
DateTime
? Die zweite ist wohl eher verwirrend, dass es sich lohnt, bis Eigentum-Erweiterungen vorhanden sind.- Erweiterung die Methode ist eindeutig der Weg, dies zu tun ordentlich. Dies ist eine ausgezeichnete, ausgereifte Antwort - und ich verstehe nicht, warum es so wenige Stimmen. Ziemlich sicher, dass Robba ist richtig - casting die Ausgabe als (int) schneidet die Folge. (Wörtlich ignorieren die Nachkommastellen des double).
(dies DateTime ignoriert) ist sehr, sehr irreführend
InformationsquelleAutor Brad
Beim subtrahieren 1970 von der aktuellen Zeit, sich bewusst sein, dass die Zeitspanne an, die meisten haben oft eine nicht-null-Millisekunden Bereich. Wenn Sie aus irgendeinem Grund daran interessiert sind, in den Millisekunden, dies im Auge behalten.
Hier ist, was ich getan habe um dieses Problem.
InformationsquelleAutor Kelly Anderson
Dies ist, was ich verwenden.
InformationsquelleAutor Matthew James Lewis
Diese Lösung geholfen in meiner situation:
Verwendung von Helfer-code:
InformationsquelleAutor Aslan Kystaubayev
Habe ich zusammen geschnitten der elegantesten Ansätze, um dieses Dienstprogramm Methode:
InformationsquelleAutor XDS