在 PowerShell 中轉換 Epoch 時間:實用指南

理解並在 PowerShell 中使用 Epoch 時間 對於處理 JWT 權杖、判斷提示或系統記錄等情境中的日期和時間操作至關重要。本指南提供了一些範例,介紹如何操作 Epoch 時間並使用 PowerShell 將其轉換為人類可讀的格式。


什麼是 Epoch 時間?

Epoch 時間又稱為 Unix 時間、 POSIX 時間或 Unix 時間戳記,是指自 1970 年 1 月 1 日(UTC/GMT 午夜)以來經過的秒數,不包括閏秒。它在程式設計和系統中被廣泛用作時間的標準表示形式。

在 JWT 權杖中,Epoch 時間常用於以下聲明,例如 iat (簽發時間)、 nbf (不早於)和 exp (過期時間)。下面是 JWT 權杖中 Epoch 時間的一個範例:

{
  "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 時間(例如 JWT 中的 exp 聲明)轉換為人類可讀的日期:

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

產生 Epoch 時間

要從目前日期產生 Epoch 時間:

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

要產生 12 小時後的 Epoch 時間:

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

實用的線上工具

如果你需要一個快速轉換工具,可以使用:


結論

使用 PowerShell 可以輕鬆處理各種使用情境中的 Epoch 時間,包括 JWT 權杖聲明、判斷提示和系統記錄。利用上述命令,你可以有效率地操作和轉換 Epoch 時間,確保指令碼和應用程式中的時間處理準確無誤。

發表留言