dateコマンドで時刻をUTCに変換する

時刻をUTCでしか扱えないプログラムありますよね。 JSTをUTCに変換してから入力しないといけないのが面倒くさい。

dateコマンドでも変換できることを知ったので、備忘録として記事にしました。

概要

2019-10-06T16:00:00+09:00 ← こういうタイムゾーン指定子が付いた表記であれば、dateコマンドでUTCに変換できます。

方法

--dateオプションにタイムゾーン指定子付きの時刻を渡し、-uまたは--universalオプションを付ける。

$ date --date "2019-10-06T16:00:00+09:00" --universal
2019年 10月  6日 日曜日 07:00:00 UTC
$ date --date "2019-10-06T16:00:00" -u  # タイムゾーン指定子がないと変換できない
2019年 10月  6日 日曜日 16:00:00 UTC

その他

ISO8601形式で表示する-Iオプション(特に-Iseconds)が便利。

$ date --date "2019-10-06T16:00:00+09:00" -I -u  # ただの-Iオプションではタイムゾーン指定子が消えてしまう
2019-10-06
$ date --date "2019-10-06T16:00:00+09:00" -Iseconds -u
2019-10-06T07:00:00+00:00

検証環境

$ date --version
date (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.