理解並在 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 時間,確保指令碼和應用程式中的時間處理準確無誤。