Analisi e riformattazione della stringa di date mediante PowerShell


2

Dato un file CSV contenente la seguente riga:

TESTA; 1; 49999; 2017/8/10 ;;;

.. Devo riformattare la data indicata come dm-yyyy in lunghezza fissa gg.mm.aaaa e / o aaaa-mm-gg (fissa, implicando naturalmente il giorno e il mese a doppia cifra)

Mentre vedo molta intelligenza dietro PowerShell, lo trovo piuttosto ingombrante. Qualsiasi aiuto è molto apprezzato!


1
Supponendo che tu sappia già come importare il file CSV in PowerShell questo dovrebbe indirizzarti nella giusta direzione:Get-Date 8-10-2017 -Format "MM.dd.yyyy"
qualunque sia il

Funziona come un incantesimo, tranne per il fatto che fraintende il posizionamento del giorno e del mese originali. 8-10 significa 8 ottobre, non 10 agosto che è ciò che sputa il cmdlet ..
Bjørn H. Sandvik

1
In tal caso, dovrai indicare a PowerShell quale impostazione cultura utilizzare:$Culture = New-Object system.globalization.cultureinfo 'en-us'; Get-Date ([datetime]::parse("8-10-2017",$Culture)) -Format dd.MM.yyyy
qualunque sia il

Voglio davvero tanto PowerShell .. Grazie per la soluzione completa ed eccellente, qualunque cosa!
Bjørn H. Sandvik,

Risposte:


2

Questo è stato essenzialmente il problema affrontato da Idera PowerTip of the Day per il 12 ottobre 2017 . La soluzione presentata era quella di utilizzare il ParseExactmetodo della DateTimeclasse .NET . Supponendo che tu abbia estratto la data dal CSV e l' $ActionDateStringhai memorizzata nella variabile , la convertiresti in un DateTimeoggetto:

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

e quindi puoi usare l' DateTimeoggetto $DTcome preferisci.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.