Converter o tempo Epoch no PowerShell: um guia prático

Compreender e trabalhar com o tempo Epoch no PowerShell é essencial ao lidar com operações de data e hora em cenários como tokens JWT, asserções ou registos do sistema. Este guia apresenta exemplos de como manipular o tempo Epoch e convertê-lo em formatos legíveis por humanos com o PowerShell.


O que é o tempo Epoch?

O tempo Epoch, também conhecido como tempo Unix, tempo POSIX ou timestamp Unix, é o número de segundos decorridos desde 1 de janeiro de 1970 (meia-noite UTC/GMT), excluindo os segundos intercalares. É amplamente usado em programação e em sistemas como representação padrão do tempo.

Em tokens JWT, o tempo Epoch é usado habitualmente para claims como iat (emitido em), nbf (não antes de) e exp (expiração). Segue-se um exemplo de tempo Epoch num 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
}

Trabalhar com datas e horas no PowerShell

Obter a data e hora atuais em UTC

Para obter a data e hora atuais em UTC:

$utc = (Get-Date).ToUniversalTime()

Converter para o formato padrão ISO 8601

Para converter a data UTC para o formato ISO 8601:

Get-Date ((Get-Date).ToUniversalTime()) -Format o

Adicionar e subtrair tempo

Podes adicionar ou subtrair tempo à data atual no PowerShell com os seguintes comandos:

Adicionar tempo

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

Subtrair tempo

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

Converter o tempo Epoch numa data legível

Para converter o tempo Epoch (por exemplo, o claim exp em JWT) numa data legível por humanos:

$epoch = "1729838496"
(Get-Date -Date "1/1/1970").AddSeconds($epoch)

Gerar tempo Epoch

Para gerar o tempo Epoch a partir da data atual:

Get-Date $((Get-Date).ToUniversalTime()) -UFormat %s

Para gerar o tempo Epoch com 12 horas de antecedência:

Get-Date $((Get-Date).AddHours(12).ToUniversalTime()) -UFormat %s

Ferramentas úteis online

Se precisares de uma ferramenta de conversão rápida, podes usar:


Conclusão

O PowerShell facilita o trabalho com o tempo Epoch em vários casos de uso, incluindo claims de tokens JWT, asserções e registos do sistema. Com os comandos acima, podes manipular e converter o tempo Epoch de forma eficiente, garantindo um tratamento preciso do tempo nos teus scripts e aplicações.

Deixe um comentário