Comprender y trabajar con el tiempo Epoch en PowerShell es esencial cuando se trata de operaciones de fecha y hora en escenarios como tokens JWT, aserciones o registros del sistema. Esta guía ofrece ejemplos de cómo manipular el tiempo Epoch y convertirlo a formatos legibles por humanos con PowerShell.
¿Qué es el tiempo Epoch?
El tiempo Epoch, también conocido como tiempo Unix, tiempo POSIX, o marca de tiempo Unix, es el número de segundos transcurridos desde el 1 de enero de 1970 (medianoche UTC/GMT), sin contar los segundos intercalares. Se usa ampliamente en programación y en sistemas como representación estándar del tiempo.
En los tokens JWT, el tiempo Epoch se usa habitualmente para claims como iat (emitido en), nbf (no antes de), y exp (vencimiento). A continuación, un ejemplo de tiempo Epoch en un token JWT:
{
"typ": "JWT",
"alg": "RS256",
"x5t": "3PaK4EfYBNQu3CtjYsa3YmhqQ5E0",
"kid": "3PaK4EfYBNQu3CtjYsa3YmhqQ5E0",
"aud": "00000003-0000-0000-c000-000000000000",
"iss": "https://sts.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/",
"iat": 1729784492,
"nbf": 1729784492,
"exp": 1729787119
}
Trabajar con fechas y horas en PowerShell
Obtener la fecha y hora actuales en UTC
Para obtener la fecha y hora actuales en UTC:
$utc = (Get-Date).ToUniversalTime()
Convertir al formato estándar ISO 8601
Para convertir la fecha UTC al formato ISO 8601:
Get-Date ((Get-Date).ToUniversalTime()) -Format o
Sumar y restar tiempo
Puedes sumar o restar tiempo a la fecha actual en PowerShell con los siguientes comandos:
Sumar tiempo
Get-Date ($utc).AddYears(1) -Format o
Get-Date ($utc).AddMonths(1) -Format o
Get-Date ($utc).AddDays(1) -Format o
Get-Date ($utc).AddHours(1) -Format o
Get-Date ($utc).AddMinutes(1) -Format o
Get-Date ($utc).AddSeconds(1) -Format o
Restar tiempo
Get-Date ($utc).AddYears(-1) -Format o
Get-Date ($utc).AddMonths(-1) -Format o
Get-Date ($utc).AddDays(-1) -Format o
Get-Date ($utc).AddHours(-1) -Format o
Get-Date ($utc).AddMinutes(-1) -Format o
Get-Date ($utc).AddSeconds(-1) -Format o
Convertir el tiempo Epoch a una fecha legible
Para convertir el tiempo Epoch (por ejemplo, el claim exp en JWT) a una fecha legible por humanos:
$epoch = "1729838496"
(Get-Date -Date "1/1/1970").AddSeconds($epoch)
Generar tiempo Epoch
Para generar el tiempo Epoch a partir de la fecha actual:
Get-Date $((Get-Date).ToUniversalTime()) -UFormat %s
Para generar el tiempo Epoch con 12 horas de antelación:
Get-Date $((Get-Date).AddHours(12).ToUniversalTime()) -UFormat %s
Herramientas útiles en línea
Si necesitas una herramienta de conversión rápida, puedes usar:
Conclusión
PowerShell facilita el trabajo con el tiempo Epoch en diversos casos de uso, como los claims de tokens JWT, aserciones y registros del sistema. Con los comandos anteriores, puedes manipular y convertir el tiempo Epoch de forma eficiente y garantizar un manejo preciso del tiempo en tus scripts y aplicaciones.