Come analizzare Datetime utilizzando ParseExact in PowerShell
-
Usa il metodo
ParseExact
per analizzareDateTime
in PowerShell -
Usa la conversione di tipo esplicita per analizzare
DateTime
in PowerShell - Conclusione

Mentre lavori con le date in PowerShell, ci sono momenti in cui dovrai convertire la stringa di data in un oggetto DateTime
. Non puoi utilizzare le stringhe di data per eseguire operazioni DateTime
; avrai bisogno dell’oggetto DateTime
.
Questa conversione è cruciale perché le stringhe di data da sole non sono sufficienti per eseguire operazioni DateTime
. Il nostro tutorial è progettato per colmare questa lacuna fornendo una guida completa su come analizzare e convertire stringhe nel formato DateTime
in PowerShell.
Usa il metodo ParseExact
per analizzare DateTime
in PowerShell
Il metodo ParseExact
della classe DateTime
converte la stringa di data e ora nel formato DateTime
. Il formato di un modello di stringa di data e ora deve corrispondere al formato specificato dell’oggetto DateTime
.
La sintassi per ParseExact
è la seguente:
[datetime]::ParseExact(string, format, provider)
Parametri:
string
: La data e ora in formato stringa che vuoi convertire.format
: Il specificatore di formato esatto che definisce il formato atteso della stringa.provider
: Un oggetto che fornisce informazioni di formattazione specifiche della cultura. Questo può esserenull
se si utilizza la cultura corrente.
Analisi semplice delle date
Il seguente esempio converte la stringa di data in un oggetto DateTime
utilizzando il metodo ParseExact
.
$dateString = '24-Jan-2024'
$format = 'dd-MMM-yyyy'
$culture = $null # Using the current culture
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
In questo codice, prima definiamo una stringa di data 24-Jan-2024
, che rappresenta una data in formato giorno-mese-anno con un nome del mese abbreviato. Specifichiamo questo formato tramite il specificatore di formato dd-MMM-yyyy
.
La variabile $culture
è impostata su $null
, il che dice a PowerShell di utilizzare l’impostazione culturale corrente del sistema per analizzare la data.
La funzione principale qui è [datetime]::ParseExact($dateString, $format, $culture)
, che analizza la $dateString
secondo il $format
specificato. Dopo l’analisi, la stringa viene convertita in un oggetto DateTime
, che memorizziamo nella variabile $parsedDate
.
Infine, usiamo Write-Host
per mostrare la data analizzata. Questa è una dimostrazione semplice ma efficace dell’uso di ParseExact
in uno scenario reale.
Output:
Questo output mostra l’oggetto DateTime
che è stato creato dalla stringa, inclusa l’ora impostata a mezzanotte (00:00:00
) per impostazione predefinita, poiché non è stata specificata alcuna ora nella stringa di input.
Utilizzare una cultura specifica
Utilizzare una cultura specifica con ParseExact
è essenziale quando si tratta di stringhe di data formattate secondo le convenzioni di una cultura diversa dall’impostazione attuale del sistema. Questo approccio previene l’errata interpretazione delle date, come confondere il mese e il giorno nei formati MM/dd/yyyy
e dd/MM/yyyy
.
Ecco un esempio semplice:
$dateString = '23/01/2024'
$format = 'dd/MM/yyyy'
$culture = [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
In questo frammento di codice, miriamo ad analizzare una stringa di data che segue il formato di data francese dd/MM/yyyy
. Prima definiamo la stringa di data 23/01/2024
.
Nota che il formato dd/MM/yyyy
potrebbe facilmente essere confuso con il formato MM/dd/yyyy
utilizzato negli Stati Uniti. Per interpretare correttamente la data come il 23 gennaio, non il 1 marzo, specifichiamo la cultura francese ('fr-FR')
.
La variabile $culture
è istanziata usando [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
, che prepara il contesto culturale per la nostra operazione di analisi. Poi chiamiamo [datetime]::ParseExact($dateString, $format, $culture)
per analizzare la stringa di data.
Infine, usiamo Write-Host
per mostrare la data analizzata, che illustra come la stringa di input sia correttamente interpretata nel contesto della cultura specificata.
Output:
Questo output dimostra l’analisi riuscita della stringa di data nel contesto della cultura francese. La data è compresa correttamente come il 23 gennaio 2024, e non fraintesa a causa di un diverso ordinamento mese-giorno.
Analisi con l’ora
In PowerShell, gestire in modo efficiente date e ore è una competenza cruciale, specialmente quando si tratta di analizzare stringhe che includono sia componenti di data che di ora. Il metodo ParseExact
della classe DateTime
è abile nell’interpretare tali stringhe, a condizione che il formato sia specificato con precisione.
Analizziamo una stringa di data e ora che include sia la data che l’ora:
$dateTimeString = '2024-01-23 14:30'
$format = 'yyyy-MM-dd HH:mm'
$provider = $null # Opting for the invariant culture
# Parsing the datetime
$parsedDateTime = [datetime]::ParseExact($dateTimeString, $format, $provider)
# Displaying the result
Write-Host "Parsed DateTime: $parsedDateTime"
Nel nostro esempio, gestiamo una stringa di data e ora 2024-01-23 14:30
, formattata in uno standard internazionale (anno-mese-giorno e ora in formato 24 ore). Impostiamo meticolosamente il $format
su yyyy-MM-dd HH:mm
per allinearci a questa struttura.
Scegliamo $null
per il $provider
, significando il nostro uso della cultura invariabile. Questo approccio è tipico quando il formato della data e ora è standard e non dipendente dalla cultura.
Il momento cruciale è quando eseguiamo [datetime]::ParseExact($dateTimeString, $format, $provider)
, trasformando la stringa in un oggetto DateTime
che incarna sia la data che l’ora dalla stringa.
Output:
Questo risultato illustra efficacemente che la nostra stringa di input è stata accuratamente analizzata in un oggetto DateTime
, catturando entrambe le componenti di data e ora.
Usa la conversione di tipo esplicita per analizzare DateTime
in PowerShell
Puoi anche eseguire il cast della stringa di una data e ora nel formato DateTime
in PowerShell.
Usando questa sintassi, puoi convertire una stringa nell’oggetto DateTime
.
[DateTime]string
Il seguente esempio converte la rappresentazione in stringa di una data e ora nell’oggetto DateTime
con l’espressione di cast.
$strDate = "2022-06-11 09:22:40"
[DateTime]$strDate
Nel nostro frammento di codice PowerShell, assegnamo la stringa "2022-06-11 09:22:40"
alla variabile $strDate
. Questa stringa rappresenta una data e ora in un formato standard.
Successivamente, eseguiamo una conversione di tipo in un oggetto DateTime
usando [DateTime]$strDate
.
Output:
Con l’oggetto DateTime
, dovresti essere in grado di eseguire qualsiasi operazione DateTime
. Speriamo che questo tutorial ti aiuti a comprendere come convertire le stringhe nel formato DateTime
in PowerShell.
Conclusione
Durante questo tutorial, abbiamo esplorato le diverse capacità di PowerShell nella gestione delle conversioni DateTime
, concentrandoci sul metodo ParseExact
e sulla sua versatilità nell’analizzare stringhe in oggetti DateTime
. Abbiamo dimostrato come gestire formati di data semplici, incorporare contesti culturali specifici e analizzare stringhe che includono sia componenti di data che di ora.
Inoltre, ci siamo addentrati nella tecnica semplice ma efficace della conversione di tipo esplicita, fornendo un metodo rapido per formati di data standard. I nostri esempi hanno mostrato l’importanza di comprendere e applicare correttamente i diversi metodi di analisi per garantire una manipolazione accurata ed efficiente di date e ore negli script PowerShell.