Преобразование времени Epoch в PowerShell: практическое руководство

Понимание и работа со временем Epoch в PowerShell необходимы при выполнении операций с датой и временем в таких сценариях, как токены JWT, утверждения или системные журналы. В этом руководстве приведены примеры того, как работать со временем Epoch и преобразовывать его в удобочитаемые форматы с помощью PowerShell.


Что такое время Epoch?

Время Epoch, также известное как время Unix, время POSIX или метка времени Unix, — это количество секунд, прошедших с 1 января 1970 года (полночь UTC/GMT), без учёта високосных секунд. Оно широко используется в программировании и системах как стандартное представление времени.

В токенах JWT время Epoch обычно используется для таких утверждений (claims), как iat (время выдачи), nbf (не раньше чем) и exp (срок действия). Ниже приведён пример времени Epoch в токене 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
}

Работа с датой и временем в PowerShell

Получение текущей даты и времени в UTC

Чтобы получить текущую дату и время в UTC:

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

Преобразование в стандартный формат ISO 8601

Чтобы преобразовать дату UTC в формат ISO 8601:

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

Добавление и вычитание времени

Вы можете добавлять время к текущей дате или вычитать его из неё в PowerShell с помощью следующих команд:

Добавление времени

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

Вычитание времени

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

Преобразование времени Epoch в удобочитаемую дату

Чтобы преобразовать время Epoch (например, утверждение exp в JWT) в удобочитаемую дату:

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

Генерация времени Epoch

Чтобы сгенерировать время Epoch из текущей даты:

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

Чтобы сгенерировать время Epoch на 12 часов вперёд:

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

Полезные онлайн-инструменты

Если вам нужен инструмент для быстрого преобразования, вы можете использовать:


Заключение

PowerShell упрощает работу со временем Epoch для различных сценариев, включая утверждения токенов JWT, утверждения и системные журналы. Используя приведённые выше команды, вы можете эффективно работать со временем Epoch и преобразовывать его, обеспечивая точную обработку времени в своих сценариях и приложениях.

Оставить комментарий