PowerShell convierte cadena a fecha | Los 5 mejores ejemplos de PowerShell
Introducción a PowerShell Convertir cadena a fecha
En muchos casos, puede ser necesario convertir una cadena en una variable de fecha o en un objeto de fecha y hora. En PowerShell, esto se puede hacer de muchas maneras. Algunas de las formas en que esto se puede hacer mediante el uso de conversión de tipos, obteniendo la fecha en formato estadounidense, mediante el análisis de fecha y hora. Esta conversión es necesaria para muchos propósitos, como enviar un objeto de cadena a una tabla de base de datos, por lo que se requiere una conversión cuando la entrada del usuario se recibe en un formato de cadena y luego debe formatearse para un proceso posterior. Este artículo cubrirá en detalle las diversas formas en que un objeto de cadena se puede convertir en un objeto de fecha y hora.
Sintaxis:
A continuación se muestra la sintaxis del análisis de fecha y hora:
[Datetime]::ParseExact('07/15/2019', 'MM/dd/yyyy', $null)Donde el primer parámetro es la cadena que se debe convertir, el segundo parámetro es el formato de la fecha que se generará y el tercero es un carácter nulo.
Código:
Write-Host "Welcome to string to date conversion example"
$string='11/11/2019'
Write-Host "The variable type now is" $string.GetType()
$string=[Datetime]::ParseExact($string, 'MM/dd/yyyy', $null)
Write-Host "After conversion the type is" $string.GetType() "and the value is" $stringSalida:
Tipos de formato de fecha disponibles en PowerShell
Antes de conocer las diversas formas en que se puede convertir una cadena en un objeto de datos, es importante conocer los distintos tipos de fechas que están disponibles en PowerShell. Será útil durante la conversión.
Los siguientes son los distintos formatos de fecha disponibles en PowerShell.
d: Indica fecha corta
D: Indica fecha larga
f: Indica fecha larga, tiempo corto
F: Indica fecha larga, tiempo prolongado
t: Denota formato de tiempo corto
T: Indica formato de tiempo prolongado
m, M: formato de día mes
g: Indica formato corto de tiempo de datos generales
G: Indica formato largo de tiempo de datos generales
Y o y: indica el patrón de año y mes
Ejemplos de conversión de cadena en fecha en PowerShell
A continuación se muestran ejemplos de PowerShell:
Ejemplo #1
Código:
Write-Host "Date in long date format" -ForegroundColor DarkYellow
Get-Date -Format D
Write-Host "long date short time" -ForegroundColor DarkYellow
Get-Date -Format f
Write-Host "long date long time" -ForegroundColor DarkYellow
Get-Date -Format F
Write-Host "Date in general date time short format" -ForegroundColor DarkYellow
Get-Date -Format g
Write-Host "Date in general date time long format" -ForegroundColor DarkYellow
Get-Date -Format G
Write-Host "month day format" -ForegroundColor DarkYellow
Get-Date -Format m
Write-Host "Date in year format" -ForegroundColor DarkYellow
Get-Date -Format ySalida:
Ejemplo #2
Código:
Write-Host "String to Date conversion examples"
Write-Host "example of yymmddhhmm format"
[System.DateTime]::ParseExact('1605221412','yyMMddHHmm',$null)
Write-Host "Global time example"
[System.DateTime]::ParseExact('1805221412','yyMMddHHmm',[System.Globalization.DateTimeFormatInfo]::CurrentInfo)
Write-Host "US Timings example"
[System.DateTime]::ParseExact('1804221610','yyMMddHHmm',[System.Globalization.CultureInfo]::GetCultureInfo('en-US'))
Write-Host "Complex example of custome pattern"
[string]$test = 'year 2020 and date 12 and month feb and time 9 00'
[string]$testpattern = '\year yyyy an\d \da\te dd an\d \mon\t\h MMM an\d \ti\me H mm'
[DateTime]::ParseExact($test, $testpattern, $null)
Write-Host "mmddyy format example"
[System.DateTime]::ParseExact('111199','mmddyy',$null)
Write-Host "mmddyyyy format example"
[System.DateTime]::ParseExact('11111999','mmddyyyy',$null)
Salida:
Ejemplo #3
Código:
Write-Host "Demo about coverting strings into dates and finding difference" -ForegroundColor DarkYellow
$stringa="01/01/2020"
$stringb="01/01/1990"
Write-Host "The current data type of the objects is" $stringa.GetType() "and" $stringb.GetType() -ForegroundColor DarkYellow
Write-Host "Converting the first string to date" -ForegroundColor DarkYellow
$date1=[System.DateTime]::ParseExact($stringa,'mm/dd/yyyy',$null)
Write-Host "the value of a the first date after conversion is "$date1 "and the type is" $date1.GetType() -ForegroundColor DarkYellow
Write-Host "Converting the second string to date" -ForegroundColor DarkYellow
$date2=[System.DateTime]::ParseExact($stringb,'mm/dd/yyyy',$null)
Write-Host "the value of a the first date after conversion is "$date2"and the type is" $date2.GetType() -ForegroundColor DarkYellow
$difference= $date2- $dateB
Write-Host "number of days difference between the two dates is " $difference.Days -ForegroundColor DarkYellow
Write-Host "number of hours difference between the two dates is " $difference.Hours -ForegroundColor DarkYellow
Write-Host "number of minutes difference between the two dates is " $difference.Minutes -ForegroundColor DarkYellow
Write-Host "number of seconds difference between the two dates is " $difference.Seconds -ForegroundColor DarkYellow
Write-Host "number of milliseconds difference between the two dates is " $difference.Milliseconds -ForegroundColor DarkYellow
Write-Host "number of total days difference between the two dates is " $difference.TotalDays -ForegroundColor DarkYellow
Write-Host "number of total hours difference between the two dates is " $difference.TotalHours -ForegroundColor DarkYellow
Write-Host "number of total minutes difference between the two dates is " $difference.TotalMinutes -ForegroundColor DarkYellow
Write-Host "number of total seconds difference between the two dates is " $difference.TotalSeconds -ForegroundColor DarkYellow
Write-Host "number of total milliseconds difference between the two dates is " $difference.TotalMilliseconds -ForegroundColor DarkYellowSalida:
Cosa importante a tener en cuenta al trabajar con la fecha
Es importante conocer la configuración local del sistema antes de encasillar una cadena en una fecha. Si el sistema sigue el formato de fecha del Reino Unido y especificamos el formato de hora de EE. UU., es posible que se genere un error o que se muestre el día incorrecto. Por ejemplo, 16/7/2020 denota el 16 de julio en formato estadounidense, mientras que en el Reino Unido genera un error ya que el segundo se considera un mes y el mes no puede ser mayor que 12. Para superar esto, se pueden utilizar configuraciones culturales locales.
Ejemplo #4
Código:
Write-Host "Local settings demo"
$string="13/2/2020"
$date= [DateTime] $stringSalida:
En el resultado anterior, se genera un error ya que el sistema sigue que la zona horaria y el mes de EE. UU. aparecen primero, por lo que no puede ser mayor que 12. Si cambiamos 13 a 12, se produce el siguiente resultado.
Código:
Write-Host "Local settings demo"
$string="12/2/2020"
$date= [DateTime] $string
Write-Host $date -ForegroundColor DarkYellowSalida:
Ejemplo #5
Código:
$tdate="06/16/2016 3:14:03 PM"
$CTDC = (Get-Culture).DateTimeFormat
Write-Host "Systems culture data time format is" $CTDC -ForegroundColor DarkYellow
$ctdcDateFormat = $CTDC.ShortDatePattern
Write-Host "systems short date pattern is" $ctdcDateFormat -ForegroundColor DarkYellow
$ctdcTimeFormat = $CTDC.LongTimePattern
Write-Host "systems long time pattern is" $ctdcTimeFormat -ForegroundColor DarkYellow
$DateTimeFormat = "$ctdcDateFormat $ctdcTimeFormat"
$DateTime = [DateTime]::ParseExact($tdate,$DateTimeFormat,[System.Globalization.DateTimeFormatInfo]::InvariantInfo,[System.Globalization.DateTimeStyles]::None)Salida:
Conclusión
Por lo tanto, el artículo cubrió en detalle la conversión de un objeto de cadena a un objeto de fecha y hora. Explicó en detalle las diversas formas de convertir una cadena en un objeto de fecha y hora, cómo se puede convertir un objeto de cadena a un formato de fecha y hora específico. También explica detalladamente los errores que se pueden encontrar durante la conversión y cómo solucionarlos. También es aconsejable conocer el formato del sistema actual antes de la conversión. Para obtener más información en detalle, es recomendable escribir programas de muestra y practicarlos.







