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/

×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

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

Ähnliche Beiträge

Netz-Weise Firmenlogo

Das Haupt-Tätigkeitsfeld von Netz-Weise sind Schulungen für Profis. Bei uns bekommen Sie das Programm für den fortgeschrittenen Praktiker, der die Tiefen des Systems ausloten möchte genauso wie Standard-Schulungen.

facebook   twitter   linkedin   xing   youtube   instagram