Pregunta Análisis y reformateo de la cadena de fecha mediante PowerShell


Dado un archivo CSV que contiene la siguiente línea:

HEAD; 1; 49999; 8-10-2017 ;;;

Necesito volver a formatear la fecha dada como d-m-aaaa en longitud fija dd.mm.aaaa y aaaa-mm-dd (fijo, lo que implica naturalmente un doble dígito día y mes)

Aunque veo mucha de la astucia detrás de PowerShell, la encuentro bastante difícil de manejar. ¡Cualquier ayuda es muy apreciada!


0


origen


Suponiendo que ya sabe cómo importar el archivo csv en powershell, esto debería apuntarle en la dirección correcta: Get-Date 8-10-2017 -Format "MM.dd.yyyy" - whatever
Eso funciona como un amuleto, excepto que malinterpreta el posicionamiento del día y el mes originales. 8-10 significa 8 de octubre, no 10 de agosto, que es lo que escupe el cmdlet. - Bjørn H. Sandvik
En ese caso, tendrá que decirle a powershell cuál cultureetting usar: $Culture = New-Object system.globalization.cultureinfo 'en-us'; Get-Date ([datetime]::parse("8-10-2017",$Culture)) -Format dd.MM.yyyy - whatever
Quiero que PowerShell ame tan mal ... ¡Gracias por una solución completa y excelente, lo que sea! - Bjørn H. Sandvik


Respuestas:


Este fue esencialmente el problema abordado por el Idera Power Tip del día para el 12 de octubre de 2017. La solución presentada fue usar el ParseExact método de la DateTime Clase .NET. Suponiendo que ha extraído la fecha del CSV y la ha almacenado en la variable $ActionDateString, entonces lo convertirías en DateTime objeto:

$DT = [DateTime]::ParseExact($ActionDateString, "dd-MM-yyyy", $null)

y luego puedes usar el DateTime objeto $DT lo que quieras.


0