(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Bash/Linux】ミリ秒表記のUNIXタイムスタンプを時刻に変換するワンライナー

スポンサーリンク

やりたいこと

以下のような13桁のUNIXタイムスタンプ(エポックミリ秒)を

1625566674036

対応する日付データに変換する。

Tue Jul  6 19:17:54 2021
環境情報
  • sed (GNU sed) 4.4
  • GNU Awk 5.1.0

やり方

sedコマンドでミリ秒を表現してprintのstrftimeで時刻データに変換する。

$ echo 1625566674036 | sed -e 's/^\(.\{10\}\)/\1./' | awk '{print strftime("%c",$1)}'

出力結果は以下。

Tue Jul 6 19:17:54 2021

以下、補足です。

補足

ミリ秒表記のためドットを挿入するのがポイントで今回は13桁固定と考えて左から10文字目に"."を挿入しています。
例えば左から3文字目に挿入する場合は以下。

$ echo 0123456789 | sed -e 's/^\(.\{3\}\)/\1./'
012.3456789

あとはこのデータを日付情報に変換しますがawk以外にもdateコマンドでも同様のことは可能です。

$ date --date "@1625566674.036"
Tue Jul  6 19:17:54 JST 2021

以上、ご参考になれば幸いです。