Come analizzare Datetime utilizzando ParseExact in PowerShell

  1. Usa il metodo ParseExact per analizzare DateTime in PowerShell
  2. Usa la conversione di tipo esplicita per analizzare DateTime in PowerShell
  3. Conclusione
Come analizzare Datetime utilizzando ParseExact in PowerShell

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ò essere null 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:

analisi precisa della data e dell’ora di powershell - output 1

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:

powershell datetime parseexact - output 2

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:

powershell datetime parseexact - output 3

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:

powershell datetime parseexact - output 4

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.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Articolo correlato - PowerShell DateTime