このエントリーをはてなブックマークに追加


PowerShellでUNIXTIMEを取得する方法

PowerShellのGet-Dateコマンドレットを使ってUNIX TIMEを取得する方法を以下に記します。


関連記事

UNIXTIME算出手順

Get-DateにUNIX時間の元期(epoch)である、1970/1/1 0:0:0 GMTを設定し、引き算することにより
UNIX時間を算出してみます。

  1. 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を設定できました。
  2. 現在の日時から$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時間となります。
  3. 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時刻を算出する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-22 (日) 16:45:26