Netz-Weise Logo

Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.
2 Minuten Lesezeit (306 Worte)

Unix/MySQL Timestamp in Datumswerte mit Powershell umwandeln

In Unix und MySQL werden Datumswerte oft als Timestamps angegeben. Ein Timestamp ist eigentlich ein Datums/Zeitwerte, der aber als Integer gespeichert ist und die Sekunden ab dem 1.01.1970 angibt. Diese Zeitzählung wird auch als "Epoch date" bezeichnet.

Die Umwandlung in einen Datumswert in Powershell ist eigentlich recht einfach, da uns Powershell alle zur Umrechung notwendigen Funktionen zur Verfügung stellt. Das Datum des 1.1.1970 liefert uns get-Date:

Get-Date '1/1/1970'

Get-Date liefert ein Objekt vom Type Datetime zurück. Alle Objekte vom Typ Datetime besitzen eine Reihe von Methoden für die Datumsmanipulation. Wir benötigen hier die Methode AddSeconds() zum Aufaddieren von Sekunden:

$Timestamp = 1464257993
(Get-Date '1/1/1970').AddSeconds($Timestamp)

Die Rückkonvertierung können wir mti Hilfe von New-Timespan durchführen. Dieses Cmdlet berechnet eine Zeitspanne anhand von zwei Daten und gibt unter anderem auch die Anzahl in Sekunden zwischen den beiden Zeitspannen aus:

[int]$timeStamp = (New-Timespan -Start (get-Date '1/1/1970') -End (get-date)).TotalSeconds

Das Ganze können wir auch in zwei kleine Funktionen gießen:

<#
  .Synopsis
  Konvertiert einen Timestamp (Epochdate) in Datetime
  .DESCRIPTION
  Konvertiert einen Timestamp (Epochdate) in Datetime. Als Übergabeparameter wird der Timestamp als
  Integer übergeben
  .EXAMPLE
  ConvertFrom-UnixTimeStamp -TimeStamp 1464257993
#>
Function ConvertFrom-UnixTimeStamp
{
param (
  # Der Zeitstempel als Integer
  [Parameter(ValueFromPipeline=$true)]
  [int]$TimeStamp
)

  (Get-Date '1/1/1970').AddSeconds($Timestamp)
}

Und eine Funktion zum Umwandeln in Timestamps:

<#
  .Synopsis
  Konvertiert einen Datetime-Datentyp in eine Unix Timestamp (Epochdate)
  .DESCRIPTION
  Konvertiert einen Datetime-Datentyp in eine Unix Timestamp (Epochdate). Als Übergabeparameter wird ein Datum
  (auch als String) angenommen
  .EXAMPLE
  Convertto-UnixTimestamp -Date '11.11.2011'
#>
Function ConvertTo-UnixTimeStamp
{
param (
  # Der umzuwandelnde Datumstyp
  [Parameter(ValueFromPipeline=$true)]
  [ValidateScript({ Try{ $_ -as [datetime]} Catch { $false } })]
  $Date = (get-Date)
)

  [int](New-Timespan -Start (get-Date '1/1/1970') -End (get-date $date)).TotalSeconds
}

Eine umfangreiche Beschreibung für die Konvertierung in verschiedenste Formate findet man hier:
http://www.epochconverter.com/

Datenbanken migrieren von mySQL zu SQL-Server
Windows 10 - Taskmanager zeigt dauerhauft hohe Sys...

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Sonntag, 19. Januar 2025

Sicherheitscode (Captcha)