Analysieren und Neuformatieren der Datumszeichenfolge mithilfe von PowerShell

2657
Bjørn H. Sandvik

Gegeben eine CSV-Datei mit folgender Zeile:

HEAD; 1; 49999; 8-10-2017 ;;;

.. Ich muss das als dm-yyyy angegebene Datum in eine feste Länge umformatieren. Dd.mm.yyyy und / oder yyyy-mm-dd (festgelegt, natürlich zweistelliger Tag und Monat)

Während ich viel von der Klugheit hinter PowerShell sehe, finde ich es eher unhandlich. Jede Hilfe wird sehr geschätzt!

0
Vorausgesetzt, Sie wissen bereits, wie Sie die CSV-Datei in Powershell importieren, sollte dies in die richtige Richtung weisen: `Get-Date 8-10-2017 -Format" MM.dd.yyyy "` whatever vor 6 Jahren 1
Das funktioniert wie ein Zauber, außer dass es die Positionierung von ursprünglichem Tag und Monat falsch interpretiert. 8-10 bedeutet "8. Oktober" und nicht "10. August", was das Cmdlet ausspuckt. Bjørn H. Sandvik vor 6 Jahren 0
In diesem Fall müssen Sie Powershell mitteilen, welche Kultureneinstellung verwendet werden soll: `$ Culture = New-Object system.globalization.cultureinfo 'en-us'; Get-Date ([datetime] :: parse ("8-10-2017", $ Culture)) -Format dd.MM.yyyy` whatever vor 6 Jahren 1
Ich möchte PowerShell so sehr gerne mögen. Vielen Dank für eine umfassende und hervorragende Lösung! Bjørn H. Sandvik vor 6 Jahren 0

1 Antwort auf die Frage

0
Jeff Zeitlin

Dies war im Wesentlichen das Problem, das der Idera PowerTip des Tages für den 12. Oktober 2017 ansprach . Die vorgestellte Lösung bestand darin, die ParseExactMethode der DateTime.NET-Klasse zu verwenden . Angenommen, Sie haben das Datum aus der CSV extrahiert und in der Variablen gespeichert $ActionDateString, dann würden Sie es in ein DateTimeObjekt konvertieren :

$DT = [DateTime]::ParseExact($ActionDateString, "dd-MM-yyyy", $null) 

und dann können Sie das DateTimeObjekt $DTnach Belieben verwenden.