Cómo analizar Datetime con ParseExact en PowerShell

  1. Usa el método ParseExact para analizar DateTime en PowerShell
  2. Usa la Conversión de Tipo Explícita para Analizar DateTime en PowerShell
  3. Conclusión
Cómo analizar Datetime con ParseExact en PowerShell

Mientras trabajas con fechas en PowerShell, hay momentos en los que necesitarás convertir la cadena de fecha en un objeto DateTime. No puedes usar cadenas de fecha para realizar operaciones de DateTime; necesitarás el objeto DateTime.

Esta conversión es crucial porque las cadenas de fecha por sí solas no son suficientes para realizar operaciones de DateTime. Nuestro tutorial está diseñado para cerrar esta brecha proporcionando una guía completa sobre cómo analizar y convertir cadenas al formato DateTime en PowerShell.

Usa el método ParseExact para analizar DateTime en PowerShell

El método ParseExact de la clase DateTime convierte la cadena de fecha y hora al formato DateTime. El formato de un patrón de cadena de fecha y hora debe coincidir con el formato especificado del objeto DateTime.

La sintaxis para ParseExact es la siguiente:

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

Parámetros:

  • string: La fecha y hora en formato de cadena que deseas convertir.
  • format: El especificador de formato exacto que define el formato esperado de la cadena.
  • provider: Un objeto que proporciona información de formato específica de la cultura. Esto puede ser null si se utiliza la configuración cultural actual.

Análisis de Fecha Simple

El siguiente ejemplo convierte la cadena de fecha en un objeto DateTime utilizando el 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"

En este código, primero definimos una cadena de fecha 24-Ene-2024, que representa una fecha en un formato día-mes-año con un nombre de mes abreviado. Especificamos este formato mediante el especificador de formato dd-MMM-yyyy.

La variable $culture se establece en $null, lo que indica a PowerShell que use la configuración cultural actual del sistema para analizar la fecha.

La función principal aquí es [datetime]::ParseExact($dateString, $format, $culture), que analiza la $dateString de acuerdo con el $format que especificamos. Después de analizar, la cadena se convierte en un objeto DateTime, que almacenamos en la variable $parsedDate.

Finalmente, usamos Write-Host para mostrar la fecha analizada. Esta es una demostración simple pero efectiva de usar ParseExact en un escenario del mundo real.

Salida:

powershell datetime parseexact - salida 1

Esta salida muestra el objeto DateTime que se ha creado a partir de la cadena, incluyendo la hora establecida en medianoche (00:00:00) por defecto, ya que no se especificó ninguna hora en la cadena de entrada.

Uso de una Cultura Específica

Usar una cultura específica con ParseExact es esencial al tratar con cadenas de fecha que están formateadas de acuerdo con las convenciones de una cultura diferente a la configuración actual del sistema. Este enfoque previene la mala interpretación de las fechas, como confundir el mes y el día en los formatos MM/dd/yyyy y dd/MM/yyyy.

Aquí hay un ejemplo simple:

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

En este fragmento de código, tenemos como objetivo analizar una cadena de fecha que sigue el formato de fecha francés dd/MM/yyyy. Primero definimos la cadena de fecha 23/01/2024.

Ten en cuenta que el formato dd/MM/yyyy podría confundirse fácilmente con el formato MM/dd/yyyy utilizado en los Estados Unidos. Para interpretar correctamente la fecha como el 23 de enero, y no como el 1 de marzo, especificamos la cultura francesa ('fr-FR').

La variable $culture se instancia utilizando [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR'), lo que prepara el contexto cultural para nuestra operación de análisis. Luego llamamos a [datetime]::ParseExact($dateString, $format, $culture) para analizar la cadena de fecha.

Finalmente, usamos Write-Host para mostrar la fecha analizada, que ilustra cómo la cadena de entrada se interpreta correctamente en el contexto de la cultura especificada.

Salida:

parseexact de fecha y hora de powershell - salida 2

Esta salida demuestra el análisis exitoso de la cadena de fecha en el contexto de la cultura francesa. La fecha se entiende correctamente como el 23 de enero de 2024, y no se malinterpreta debido a un diferente orden de mes y día.

Análisis con Hora

En PowerShell, manejar eficientemente fechas y horas es una habilidad crucial, especialmente cuando se trata de analizar cadenas que incluyen tanto componentes de fecha como de hora. El método ParseExact de la clase DateTime es hábil en interpretar tales cadenas, siempre que el formato se especifique con precisión.

Analicemos una cadena de fecha y hora que incluye tanto la fecha como la 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"

En nuestro ejemplo, manejamos una cadena de fecha y hora 2024-01-23 14:30, formateada en un estándar internacional (año-mes-día y hora en formato de 24 horas). Configuramos meticulosamente el $format a yyyy-MM-dd HH:mm para alinearnos con esta estructura.

Elegimos $null para el $provider, significando nuestro uso de la cultura invariante. Este enfoque es típico cuando el formato de fecha y hora es estándar y no dependiente de la cultura.

El momento pivotal es cuando ejecutamos [datetime]::ParseExact($dateTimeString, $format, $provider), transformando la cadena en un objeto DateTime que encarna tanto la fecha como la hora de la cadena.

Salida:

parseexact de fecha y hora de PowerShell - salida 3

Este resultado ilustra de manera efectiva que nuestra cadena de entrada se ha analizado con precisión en un objeto DateTime, capturando tanto los componentes de fecha como de hora.

Usa la Conversión de Tipo Explícita para Analizar DateTime en PowerShell

También puedes convertir la cadena de una fecha y hora al formato DateTime en PowerShell.

Usando esta sintaxis, puedes convertir una cadena en un objeto DateTime.

[DateTime]string

El siguiente ejemplo convierte la representación en cadena de una fecha y hora en el objeto DateTime con la expresión de conversión.

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

En nuestro fragmento de código de PowerShell, asignamos la cadena "2022-06-11 09:22:40" a la variable $strDate. Esta cadena representa una fecha y hora en un formato estándar.

Después de esto, realizamos una conversión de tipo a un objeto DateTime utilizando [DateTime]$strDate.

Salida:

powershell datetime parseexact - salida 4

Con el objeto DateTime, deberías poder realizar cualquier operación de DateTime. Esperamos que este tutorial te ayude a entender cómo convertir cadenas al formato DateTime en PowerShell.

Conclusión

A lo largo de este tutorial, hemos explorado las diversas capacidades de PowerShell en el manejo de conversiones de DateTime, centrándonos en el método ParseExact y su versatilidad para analizar cadenas en objetos DateTime. Hemos demostrado cómo manejar formatos de fecha simples, incorporar contextos culturales específicos, y analizar cadenas que incluyen tanto componentes de fecha como de hora.

Además, profundizamos en la técnica sencilla pero efectiva de conversión de tipo explícita, proporcionando un método rápido para formatos de fecha estándar. Nuestros ejemplos han mostrado la importancia de comprender y aplicar correctamente diferentes métodos de análisis para garantizar una manipulación precisa y eficiente de fechas y horas en scripts de PowerShell.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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

Artículo relacionado - PowerShell DateTime