PowerShell: Einlesen eines kulturunabhängigen Datum-Strings
Dieser kleine Artikel soll eine Möglichkeit aufzeigen, wie das korrekte Einlesen eines Strings als Datum in kulturunabhängiger Schreibweise durchgeführt werden kann. Erste Voraussetzung ist, dass der String bestimmte Daten beinhaltet. So muss der String mindestens eine gültige Dateninformation bzw. Werte aufweisen. Ein Beispiel ohne Uhrzeit in deutscher Schreibweise wäre:
01.08.2019
In deutscher Schreibweise (dd/MM/yyyy) ist das Datum also:
01. August 2019
Das System würde diesen String aufgrund des Standards (System-Culture) wie folgt einlesen:
Dienstag, 8. Januar 2019 00:00:00
Um diesen Fehler/Verdreher beim Einlesen des Strings und bei der Konvertierung zu einem „echten“ Datum zu verhindern kann folgende Zeile helfen.
$MeinDatum = "01.08.2019"
"{0:dd/MM/yyyy}" -f [datetime]$MeinDatum
echo $MeinDatum
Die direkte Ausgabe und Interpretation des Systems sieht dann wie folgt aus:
Donnerstag, 1. August 2019 00:00:00
Somit kann dieser Wert genutzt werden, um beispielsweise Vergleiche an bestimmten Daten durchzuführen. Da keine Uhrzeit im String zu finden war, wird diese automatisch auf 00:00:00 gesetzt.
Natürlich lässt sich über die Sinnhaftigkeit dieser Methode diskutieren ;-) und mit Sicherheit gibt es noch einige andere Wege um ein in internationaler Schreibweise formatiertes Datum korrekt einzulesen. Umso mehr freue ich mich über Kommentare mit alternativen Möglichkeiten.