Get-Date: Datum berechnen und formatieren in Powershell


    Tags: ,

    Kostenlose Studie: Was verdienen IT-Experten wirklich? Gliederung der Gehälter nach Berufserfahrung, Position und Funktion. Jetzt herunterladen »

    (Anzeige)

    Ruft man das Cmdlet Get-Date ohne Argumente auf, dann gibt es nur das Systemdatum aus. Daraus soll man jedoch nicht den voreiligen Schluss ziehen, dass es sich dabei nur um die Powershell-Entsprechung zum date-Befehl von cmd.exe handelt. Vielmehr beherrscht es fast beliebige Datumsberechnungen und Datumsformate.

    Wie in vielen anderen Bereichen bringt Powershell auch bei der Kalkulation von Datumswerten einen erheblichen Fortschritt gegenüber den Möglichkeiten von cmd.exe und Batch-Dateien. Das beginnt schon bei einfacheren Aufgaben und wird etwa bei der Berechnung von Wochentagen offensichtlich, die in einer Batchdatei nur mit Mühe zu bewältigen ist.

    Einfaches Auslesen von Tag, Monat, Jahr, etc.

    Zu den simplen Aufgaben gehört es, die Bestandteile eines Datums zu extrahieren, sei es Monat, Jahr oder Wochentag. Sie alle sind Eigenschaften eines date-time-Objekts und lassen sich ohne umständliches Parsen einer Zeichenkette direkt ausgeben. Lädt man zum Beispiel die aktuelle Systemzeit in die Variable $datum

    $datum = Get-Date

    dann kann man auf einzelne Teile des Datums so zugreifen:

    $datum.Day    # Tag des Monats (numerisch)
    $datum.Month   # Monat (numerisch)
    $datum.DayOfWeek # Wochentag (String auf Englisch, also z.B. "Monday")
    

    Dabei werden keine Zeichenketten ausgelesen, vielmehr berechnet das date-time-Objekt die Werte der betreffenden Eigenschaften. Das erkennt man daran, dass man Get-Date mit einem beliebigen Datum laden und daraus die einzelnen Properties abrufen kann:

    (Get-Date "24.08.2012").DayOfWeek

    gibt den Wochentag des 24. August 2012 aus.

    Wochentag auf Deutsch ausgeben

    Wie schon erwähnt, hat die DayOfWeek-Eigenschaft den Nachteil, dass der Wert auf Englisch ausgegeben wird. Wer die deutschen Wochentage möchte, kann sie über den Parameter -Format bekommen:

    Get-Date "24.08.2012" -Format dddd

    Der Parameter -Format eignet sich natürlich nicht nur, um bestimmte Werte aus dem Datum auszulesen, sondern um die Ausgabe praktisch nach Belieben zu gestalten, etwa

    Get-Date -Format d.M.yyyy

    um es ohne Uhrzeit und Wochentag in Kurzform darzustellen.

    Arithmetische Operationen mit Datumsangaben

    Neben den zahlreichen Eigenschaften bietet ein date-time-Objekt noch Methoden, die alle möglichen Berechnungen von Datumwerten erlauben. So kann man mit Hilfe von AddDays eine bestimmte Anzahl von Tagen zu einen Datum addieren, das Gleiche funktioniert mit entsprechenden Funktionen auch mit Monaten, Stunden, Minuten, etc. Zum Beispiel gibt

    (Get-Date "24.08.2012").AddDays(30).DayOfWeek

    den Wochentag jenes Datums aus, das 30 Tage nach dem 24. August 2012 liegt. Bei Berechnungen von Datumswerten ist auch einfach der Einsatz von arithmetischen Operatoren erlaubt:

    (Get-Date "24.12.2012").DayOfYear - (Get-Date).DayOfYear

    Dieses Beispiel berechnet, wie viele Tage es noch bis Weihnachten dauert.

    Nur Datum oder nur Zeit extrahieren

    Interessant sind zwei weitere Methoden, wenn man aus einem date-time-Objekt nur den Datums- oder Zeitanteil extrahieren will. Es handelt sich dabei um ToShortDateString() und ToShortTimeString(). So gibt

    (Get-Date).ToShortTimeString()

    nur die aktuelle Zeit ohne Datum aus. Wer sich eine Übersicht über alle Eigenschaften und Methoden eines date-time-Objekts verschaffen will, kann dies mit dem Befehl

    Get-Date|Get-Member

    tun.

    Keine Kommentare