PowerShell에서 에포크 시간 을 이해하고 다루는 것은 JWT 토큰, 어설션, 시스템 로그 등의 시나리오에서 날짜 및 시간 작업을 수행할 때 필수적입니다. 이 가이드에서는 PowerShell을 사용하여 에포크 시간을 조작하고 사람이 읽을 수 있는 형식으로 변환하는 방법에 대한 예를 제공합니다.
에포크 시간이란?
에포크 시간은 Unix 시간, POSIX 시간또는 Unix 타임스탬프라고도 하며, 1970년 1월 1일(UTC/GMT 자정)부터 경과한 초 수로, 윤초는 제외됩니다. 프로그래밍과 시스템에서 표준 시간 표현으로 널리 사용됩니다.
JWT 토큰에서는 에포크 시간이 iat (발급 시각), nbf (유효 개시 시각), exp (만료 시각) 등의 클레임에 흔히 사용됩니다. 다음은 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
에포크 시간을 읽을 수 있는 날짜로 변환하기
에포크 시간(예: JWT의 exp 클레임)을 사람이 읽을 수 있는 날짜로 변환하려면:
$epoch = "1729838496"
(Get-Date -Date "1/1/1970").AddSeconds($epoch)
에포크 시간 생성하기
현재 날짜에서 에포크 시간을 생성하려면:
Get-Date $((Get-Date).ToUniversalTime()) -UFormat %s
12시간 후의 에포크 시간을 생성하려면:
Get-Date $((Get-Date).AddHours(12).ToUniversalTime()) -UFormat %s
유용한 온라인 도구
빠른 변환 도구가 필요하다면 다음을 사용할 수 있습니다.
결론
PowerShell을 사용하면 JWT 토큰 클레임, 어설션, 시스템 로그 등 다양한 사용 사례에서 에포크 시간을 쉽게 다룰 수 있습니다. 위 명령을 활용하면 에포크 시간을 효율적으로 조작하고 변환하여 스크립트와 애플리케이션에서 정확한 시간 처리를 보장할 수 있습니다.