$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

epochをISO8601のフォーマットに変換するコマンド

エンジニアをしているとepoch秒をよく見るが、epoch秒だと頭でいつの時間か理解するのは難しい。ISO8601のフォーマットだとシュッと理解できる。つまり

  • epoch秒の1547018800 <- すぐに日付などが分からない
  • ISO8601の2019-01-09T16:26:40+0900 <- すぐに分かる!

epoch秒が出てきた時にシュッとISO8601のフォーマットに変換したいことがあったので調べていたのだけど、実はdateコマンドで一発だった。

Macの場合。

$ date -r 1547018800 +%Y-%m-%dT%H:%M:%S%z
2019-01-09T16:26:40+0900

Debianの場合。

$ date --date='@1547018800' +%Y-%m-%dT%H:%M:%S%z
2019-01-09T16:26:40+0900

あとはこのコマンドをepoch2dateとしてシェルスクリプトを置いておくと便利に使える。

/path/to/bin/epoch2date

#!/bin/bash
date -r $1 +%Y-%m-%dT%H:%M:%S%z
$ epoch2date 1547018800
2019-01-09T16:26:40+0900