Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ISO 8601形式の文字列をdateコマンドで加工する/出力する

時刻同期標準のISO 8601形式で記述された文字列を
dateコマンドでよろしく扱う方法です。

他の時刻構文と同様、"-d"オプションでよろしく判定してくれます。
タイムゾーンは、使用中のシェルの設定が反映されます。
私のはJSTなので、よろしくやってくれます。

……スグレモノですね。

$ date -d "2020-06-10T12:30:55Z"
Wed Jun 10 21:30:55 JST 2020

ちゃんとした構文でないと、スマートさが祟って意図しないタイムゾーンになる可能性があるので注意してください。

$ date -d "2020-06-10T12:30:55"
Wed Jun 10 12:30:55 JST 2020

出力をISO8601とすることも当然可能です。
区切りを値として設定してください。

$ date -d "2020-06-10T12:30:55Z" -Iseconds
2020-06-10T21:30:55+09:00

何らかの事情でUCTにしたい場合、TZ=0と環境設定してあげるだけで済みます。

$ TZ=0 date -d "2020-06-10T12:30:55Z" -Iseconds
2020-06-10T12:30:55+00:00