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

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 sernull
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:
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:
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:
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:
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.