Wie erwähnt, ist die UNIX-Epoche der 1. Januar 1970 um 12:00 Uhr (Mitternacht) UTC . Um die aktuellen Sekunden seit der Epoche in UTC in einer ganzen Zahl zu erhalten, benutze ich diesen 80-Zeichen-Einzeiler
%Vor%Der obige Code ist PowerShell 2.0-kompatibel & amp; abgerundet (um ein konsistentes Verhalten mit UNIX zu gewährleisten)
Mit .NET Framework 4.6 können Sie die Methode ToUnixTimeSeconds
der Klasse DateTimeOffset
verwenden :
Um Sekunden seit 1970 unabhängig von der Zeitzone zu bekommen, würde ich gehen mit:
%Vor%Ich wollte nur noch einen anderen und hoffentlich einfacheren Weg vorstellen, dies anzugehen. Hier ist ein Liner, den ich verwendet habe, um die aktuelle Unix-Zeit in UTC zu erhalten:
%Vor%Dies ruft das aktuelle Datum / die aktuelle Uhrzeit in der UTC-Zeitzone ab. Wenn Sie die Ortszeit haben möchten, rufen Sie einfach Get-Date auf. Dies wird dann als Eingabe für ...
verwendetKonvertieren Sie das UTC-Datum / die UTC-Zeit (vom ersten Schritt) in das Unix-Format. Das -UFormat% s teilt Get-Date mit, dass das Ergebnis als Unix-Epochenzeit zurückgegeben wird (Sekunden seit dem 1. Januar 1970 00:00:00). Beachten Sie, dass dies einen double -Datentyp (im Grunde eine Dezimalzahl) zurückgibt. Durch Umwandlung in einen langen -Datentyp wird dieser automatisch in eine 64-Bit ganze Zahl (keine Dezimalzahl) konvertiert (gerundet). Wenn Sie die zusätzliche Genauigkeit der Dezimalzahl wünschen, können Sie sie nicht auf einen langen -Typ anwenden.
Eine andere Möglichkeit zum Konvertieren / Runden einer Dezimalzahl in eine ganze Zahl ist die Verwendung von System.Math :
%Vor%Ich schlage folgendes vor, das auf Ticks (Int64) statt auf Sekunden (Int32) basiert, um das Jahr-2038-Problem zu vermeiden. [Math] :: Floor wird verwendet, da die Unix-Zeit auf der Anzahl der ganzen Sekunden seit der Epoche basiert.
%Vor%Hier ist ein Skript, das sowohl TO als auch FROM CTIME konvertiert, das ich schon länger benutzt habe (länger, weil es für eine Crowd vom Typ "new to scripting" mit verschiedenen Kommentaren geschrieben wurde).
%Vor%Ich hoffe, das hilft, vor allem, wenn Sie einfach etwas wollen, das für Anfänger oder so ein bisschen freundlicher ist:).
Powershell $ epoch = (Get-Date -Date ((Get-Date) .DateTime) -UFormat% s)
Tags und Links datetime powershell