PowerShellでUNIXTIMEを取得する方法 †
PowerShellのGet-Dateコマンドレットを使ってUNIX TIMEを取得する方法を以下に記します。
関連記事 †
UNIXTIME算出手順 †
Get-DateにUNIX時間の元期(epoch)である、1970/1/1 0:0:0 GMTを設定し、引き算することにより
UNIX時間を算出してみます。
- UNIXTIMEを設定します。
$UNIX_EPOCH = Get-Date("1970/1/1 0:0:0 GMT")
以下、実際に設定し、変数$UNIX_EPOCHを確認すると日本時間(+9時間)になっていることが確認できます。
PS C:\> $UNIX_EPOCH = Get-Date("1970/1/1 0:0:0 GMT")
PS C:\> $UNIX_EPOCH
1970年1月1日 9:00:00
これで種となる$UNIX_EPOCHを設定できました。
- 現在の日時から$UNIX_EPOCHを引き算してみる
PS C:\> (Get-Date) - $UNIX_EPOCH
Days : 17734
Hours : 5
Minutes : 36
Seconds : 49
Milliseconds : 73
Ticks : 15322378090730053
TotalDays : 17734.2339013079
TotalHours : 425621.61363139
TotalMinutes : 25537296.8178834
TotalSeconds : 1532237809.07301
TotalMilliseconds : 1532237809073.01
上記の通り、引き算したときの値が表示されます。
UNIX時間は1970/1/1 0:0:0からの経過秒数なので、TotalSecondsがUNIX時間となります。
- UNIX_EPOCHから1時間経過したUNIX時間を取得してみる
PS C:\> $OneHour = $UNIX_EPOCH.AddHours(1)
PS C:\> $OneHour
1970年1月1日 10:00:00
PS C:\> ($OneHour - $UNIX_EPOCH).TotalSeconds
3600
上記の通り、3600秒(1時間)経過した値が返却されます。
したがって、以下の構文でUNIX時間を取得することができます。
((Get-Date("西暦/月/日 時:分:秒")) - (Get-Date("1970/1/1 0:0:0 GMT"))).TotalSeconds
実際に2018/7/22 0:0:0 を設定し実行したときの出力です。
PS C:\> ((Get-Date("2018/7/22 0:0:0")) - (Get-Date("1970/1/1 0:0:0 GMT"))).TotalSeconds
1532185200
以上、PowerShellでUNIX時刻を算出する方法でした。