PowerShell puede hacer muchas cosas y, como cualquier buen lenguaje de programación, puede hacer casi cualquier cosa que desee con las fechas. Con el comando PowerShell Get-Date y otras técnicas, puede encontrar la fecha de hoy, la fecha de mañana, las fechas de formato y mucho más.

en este artículo, ¡aprenderás todo sobre dates y PowerShell!,

tabla de contenidos

prerrequisitos

para seguir los ejemplos de este artículo, asegúrese de cumplir los siguientes prerrequisitos con antelación:

  • Windows PowerShell v5 o superior: incluso si está utilizando una versión anterior, todos los ejemplos probablemente seguirán funcionando bien.

encontrar la fecha actual con PowerShell

Una de las formas más fáciles de descubrir la fecha actual con PowerShell es mediante el cmdlet Get-Date. Este comando muestra la fecha y hora actuales como se muestra a continuación.,

PS> Get-DateSunday, November 22, 2020 1:25:57 AM

de forma predeterminada, Get-Date parece que solo devuelve la fecha y hora actuales, pero, en realidad, está devolviendo mucha más información. Para encontrar esta información, canalice la salida al cmdlet Format-List como se muestra a continuación.

También puede usar el cmdlet Get-Member para buscar todas las propiedades del objeto ejecutando Get-Date | Get-Member -MemberType Properties también.,

Si marca el tipo de objeto Get-Date devuelve, notará que es un tipo de objeto System.DateTime. Esta clase es la que expone todas las diferentes propiedades y métodos que ve. Puede descubrir su tipo de objeto usando Get-Member o usando GetType() como se muestra a continuación.

PS> (Get-Date).GetType().FullNameSystem.DateTime

Una vez que vea todas las propiedades disponibles que tiene disponibles, puede referenciarlas con notación de puntos como se muestra a continuación.,

PS> (Get-Date).Year2020PS> (Get-Date).DayOfWeekSundayPS> (Get-Date).Month11PS> (Get-Date).DayOfYear327

¿la notación de puntos es demasiado «devvy» para ti? Si es así, también puede usar el parámetro DisplayHint para lograr el mismo resultado.

Usando Get-Date es la forma más sencilla de encontrar la fecha actual y varios atributos, ¡pero puedes hacer mucho más!

aritmética de fechas con PowerShell

supongamos que necesita conocer la fecha y / o la hora de un determinado número de días, años o minutos en el pasado o en el futuro. Puede encontrar esta información utilizando métodos.,

usando métodos DateTime

el objeto System.DateTimeque devuelve Get-Date tiene varios métodos que puede invocar para agregar o eliminar trozos de tiempo. Si ejecuta Get-Date | Get-Member, vas a ver varios métodos que comienzan con Add.

AddDays Method datetime AddDays(double value)AddHours Method datetime AddHours(double value)AddMilliseconds Method datetime AddMilliseconds(double value)AddMinutes Method datetime AddMinutes(double value)AddMonths Method datetime AddMonths(int months)AddSeconds Method datetime AddSeconds(double value)AddTicks Method datetime AddTicks(long value)AddYears Method datetime AddYears(int value)

Puede llamar a cada uno de estos métodos para encontrar una fecha / hora en el futuro o en el pasado. A continuación verá algunos ejemplos de cómo invocar cada uno de estos métodos y sus resultados.,

usando New-Timespan

¿Qué pasaría si quisiera saber la diferencia entre dos fechas; no solo agregar un número específico de fragmentos de tiempo? Una forma de hacerlo es usar el cmdlet New-Timespan. El cmdlet New-Timespan genera objetos TimeSpan que representan diferencias o intervalos de fecha y hora.

utilice el cmdlet New-TimeSpan proporcionando una fecha/hora Start y End como parámetros., Por ejemplo, si desea encontrar la diferencia entre el 23 de noviembre de 2020 a medianoche y el 31 de diciembre de 2020 a medianoche, puede usar el siguiente fragmento de código.

Usando objetosTimeSpan, puede encontrar diferencias de fecha / hora en casi cualquier incremento que desee.

Comparar fechas

no solo puede encontrar diferencias en fechas y horas, sino que también puede compararlas utilizando operadores estándar de PowerShell. PowerShell sabe cuándo una fecha es » menor que «(anterior a) o» mayor que » (Posterior a) otra fecha.,

para comparar fechas, simplemente cree dos objetos DateTime usando Get-Date o quizás fundiendo cadenas con y luego usando operadores estándar de PowerShell como lt o gt.

Puede ver un ejemplo simple de comparación de fechas a continuación.

#Declaring the datePS> $Date1 = (Get-Date -Month 11 -Day 14 -Year 2020)PS> $Date2 = Get-DatePS> $Date1 -lt $Date2True

convertir cadenas (Casting) a objetos DateTime

PowerShell también puede mostrar fechas en varios formatos., Por ejemplo, supongamos que tiene un archivo CSV o una hoja de cálculo con varias fechas definidas en el formato que ve a continuación en la columna date_time_utc. El formato es actualmente YYYY-MM-DDThh:mm:ss.0000000Z.

desea analizar este archivo y encontrar todas las filas con una fecha de siete días o más.

Formato de Fecha Ejemplo

PowerShell, por defecto, no sabe que 2020-09-07T13:35:08.4780000Z es una fecha y hora; sólo piensa que es una simple cadena de caracteres., Para que PowerShell lo entienda, primero debe convertirlo a un objeto DateTime como Get-Date devuelve.

para convertir una cadena a un objeto DateTime, preface la cadena (o variable) con . Al hacer esto, PowerShell intenta interpretar la cadena como una fecha y hora y luego le proporciona todas las propiedades y métodos disponibles en este tipo de objeto.,

PS> $Date = "2020-09-07T13:35:08.4780000Z"PS> $DateMonday, September 07, 2020 1:35:08 PM

formato de fecha de PowerShell

ahora que conoce los métodos básicos para usar fechas, es hora de profundizar en el tema. Juguemos un poco más usando diferentes formatos para mostrar las fechas.

cada vez que se ejecuta Get-Date, aparecerá una salida como Monday, September 07, 2020 1:35:08 PM. Esta salida es en realidad un objeto DateTime con propiedades y métodos; no una simple cadena., Sin embargo, puede convertir este objeto DateTime en una cadena y representarlo de manera diferente utilizando varios métodos de formato de fecha.

métodos DateTime

Una forma de cambiar cómo se muestra un objeto DateTime es mediante el uso de métodos en el objeto DateTime., El DateTime objeto tiene cuatro métodos que puede utilizar para cambiar el formato:

  • ToLongDateString()
  • ToShortDateString()
  • ToLongTimeString()
  • ToShortTimeString()

Usted puede ver un ejemplo del uso de la ToShortDateString() y ToShortTimeString() métodos a continuación.,

PS> $Date = $DatePS> $date.ToShortDateString() + " " + $date.ToShortTimeString()9/7/2020 7:05 PM

El Parámetro de Formato

Una forma de cambiar el formato de fecha de un DateTime objeto es mediante el uso de Get-Date para generar el objeto y el Format parámetro para cambiar el formato. El parámetro Format acepta una cadena de caracteres cada uno que representa cómo debe verse una cadena de fecha / hora.

Puede ver algunos ejemplos de los caracteres que puede usar con el parámetro Format.,

consulte la documentación de Microsoft para obtener un desglose completo de todos los caracteres que puede usar con el parámetro Format.

verá tan pronto como use el parámetro Format, Get-Date ya no devuelve un objeto DateTime pero ahora cadena una cadena.,

PS> (Get-Date -Format D).GetType().FullNameSystem.String

El UFormat Parámetro

Similar a la de Format parámetro, también tiene un UFormat parámetro con el Get-Date cmdlet. El parámetro UFormat le permite definir formatos de fecha utilizando formato de fecha UNIX.

el parámetroUFormat es similar al parámetroFormat en el sentido de que puede combinar caracteres de formato de fecha para cambiar cómo se devuelve la fecha como una cadena. Por ejemplo, pruebe los siguientes formatos y vea lo que se devuelve.,

PS> Get-Date -UFormat %APS> Get-Date -UFormat %bPS> Get-Date -UFormat %B

También puede combinar estos caracteres de formato de fecha. El fragmento de código a continuación utiliza los caracteres d, m, y Ypara devolver la fecha en el formato dd-mm-yyyy and utiliza el para devolver el formato de hora 12 horas utilizando el carácter zona horaria t.

PS> Get-Date -UFormat "%d-%m-%Y %r %Z"22-11-2020 06:10:55 PM +05

consulte la documentación de Microsoft para obtener un desglose completo de todos los caracteres que puede usar con el parámetro UFormat.