Como analisar a data e hora usando ParseExact no PowerShell

  1. Use o método ParseExact para analisar DateTime no PowerShell
  2. Use a Conversão de Tipo Explícita para Analisar DateTime no PowerShell
  3. Conclusão
Como analisar a data e hora usando ParseExact no PowerShell

Enquanto trabalha com datas no PowerShell, há momentos em que você precisará converter a string de data em um objeto DateTime. Você não pode usar strings de data para realizar operações de DateTime; você precisará do objeto DateTime.

Essa conversão é crucial porque strings de data por si mesmas não são suficientes para realizar operações de DateTime. Nosso tutorial foi projetado para preencher essa lacuna, oferecendo orientações abrangentes sobre como analisar e converter strings para o formato DateTime no PowerShell.

Use o método ParseExact para analisar DateTime no PowerShell

O método ParseExact da classe DateTime converte a string de data e hora para o formato DateTime. O padrão de formato de uma string de data e hora deve corresponder ao formato especificado do objeto DateTime.

A sintaxe para ParseExact é a seguinte:

[datetime]::ParseExact(string, format, provider)

Parâmetros:

  • string: A data e hora no formato de string que você deseja converter.
  • format: O especificador de formato exato que define o formato esperado da string.
  • provider: Um objeto que fornece informações de formatação específicas da cultura. Isso pode ser null se usar a configuração de cultura atual.

Análise Simples de Data

O seguinte exemplo converte a string de data em um objeto DateTime usando o método 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"

Neste código, primeiro definimos uma string de data 24-Jan-2024, que representa uma data no formato dia-mês-ano com um nome de mês abreviado. Especificamos esse formato pelo especificador de formato dd-MMM-yyyy.

A variável $culture é definida como $null, o que informa ao PowerShell para usar a configuração de cultura atual do sistema para analisar a data.

A função central aqui é [datetime]::ParseExact($dateString, $format, $culture), que analisa a $dateString de acordo com o $format que especificamos. Após a análise, a string é convertida em um objeto DateTime, que armazenamos na variável $parsedDate.

Finalmente, usamos Write-Host para exibir a data analisada. Esta é uma demonstração simples, mas eficaz, de como usar ParseExact em um cenário do mundo real.

Saída:

powershell datetime parseexact - saída 1

Essa saída mostra o objeto DateTime que foi criado a partir da string, incluindo o horário definido para meia-noite (00:00:00) por padrão, já que nenhum horário foi especificado na string de entrada.

Usando uma Cultura Específica

Usar uma cultura específica com ParseExact é essencial ao lidar com strings de data que são formatadas de acordo com as convenções de uma cultura diferente da configuração atual do sistema. Essa abordagem previne a interpretação errônea de datas, como confundir o mês e o dia nos formatos MM/dd/yyyy e dd/MM/yyyy.

Aqui está um exemplo simples:

$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"

Neste trecho de código, buscamos analisar uma string de data que segue o formato de data francês dd/MM/yyyy. Primeiro, definimos a string de data 23/01/2024.

Observe que o formato dd/MM/yyyy poderia facilmente ser confundido com o formato MM/dd/yyyy usado nos Estados Unidos. Para interpretar corretamente a data como o dia 23 de janeiro, e não como o dia 1 de março, especificamos a cultura francesa ('fr-FR').

A variável $culture é instanciada usando [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR'), que prepara o contexto cultural para nossa operação de análise. Em seguida, chamamos [datetime]::ParseExact($dateString, $format, $culture) para analisar a string de data.

Finalmente, usamos Write-Host para exibir a data analisada, que ilustra como a string de entrada é interpretada corretamente no contexto da cultura especificada.

Saída:

powershell datetime parseexact - saída 2

Essa saída demonstra a análise bem-sucedida da string de data no contexto da cultura francesa. A data é entendida corretamente como o dia 23 de janeiro de 2024, e não é mal interpretada devido à ordem diferente de mês-dia.

Analisando com Hora

No PowerShell, lidar eficientemente com datas e horas é uma habilidade crucial, especialmente quando se trata de analisar strings que incluem tanto componentes de data quanto de hora. O método ParseExact da classe DateTime é hábil em interpretar tais strings, desde que o formato seja especificado com precisão.

Vamos analisar uma string de data e hora que inclui tanto a data quanto a hora:

$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"

Em nosso exemplo, lidamos com uma string de data e hora 2024-01-23 14:30, formatada em um padrão internacional (ano-mês-dia e horário de 24 horas). Definimos meticulosamente o $format como yyyy-MM-dd HH:mm para alinhar com essa estrutura.

Escolhemos $null para o $provider, significando que estamos usando a cultura invariável. Essa abordagem é típica quando o formato de data e hora é padrão e não depende da cultura.

O momento crucial é quando executamos [datetime]::ParseExact($dateTimeString, $format, $provider), transformando a string em um objeto DateTime que incorpora tanto a data quanto a hora da string.

Saída:

powershell datetime parseexact - saída 3

Esse resultado ilustra efetivamente que nossa string de entrada foi analisada com precisão em um objeto DateTime, capturando tanto os componentes de data quanto de hora.

Use a Conversão de Tipo Explícita para Analisar DateTime no PowerShell

Você também pode converter a string de uma data e hora para o formato DateTime no PowerShell.

Usando essa sintaxe, você pode converter uma string para o objeto DateTime.

[DateTime]string

O seguinte exemplo converte a representação de string de uma data e hora para o objeto DateTime com a expressão de conversão.

$strDate = "2022-06-11 09:22:40"
[DateTime]$strDate

Em nosso trecho de código PowerShell, atribuímos a string "2022-06-11 09:22:40" à variável $strDate. Esta string representa uma data e hora em um formato padrão.

Após isso, realizamos uma conversão de tipo para um objeto DateTime usando [DateTime]$strDate.

Saída:

análise de data e hora do powershell parseexact - saída 4

Com o objeto DateTime, você deve ser capaz de realizar qualquer operação de DateTime. Esperamos que este tutorial ajude você a entender como converter strings para o formato DateTime no PowerShell.

Conclusão

Ao longo deste tutorial, exploramos as diversas capacidades do PowerShell em lidar com conversões de DateTime, focando no método ParseExact e sua versatilidade em analisar strings em objetos DateTime. Demonstramos como lidar com formatos de data simples, incorporar contextos culturais específicos e analisar strings que incluem tanto componentes de data quanto de hora.

Além disso, nos aprofundamos na técnica direta, mas eficaz, de conversão de tipo explícita, fornecendo um método rápido para formatos de data padrão. Nossos exemplos mostraram a importância de entender e aplicar corretamente diferentes métodos de análise para garantir a manipulação precisa e eficiente de data e hora em scripts PowerShell.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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

Artigo relacionado - PowerShell DateTime