Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

dateコマンドでUNIX秒+ミリ秒な文字列を生成する

$ date +%s

とすればUNIX時間の秒表記がでてきます。
が、連携先がGPSなど秒より細かい刻みで動いてるデータの場合、ミリ秒の単位があると嬉しかったりすることも。

実際のところ

揃えればいい時

なら、とりあえず1000倍……というか、末尾にゼロ3個。

$ date +%s000
1616512600000

一応ミリ秒も併せたい

上のだと流石に……という場合は、%Nオプションで得られる小数点以下ナノ秒の出力を加工する方針でどうでしょう。

$ date +%N
183833594

helpの表記をみるに

%N nanoseconds (000000000..999999999)

とゼロ詰め実装のようなので雑に頭3文字をcutします。

$ date +%N | cut -b 1-3
183

(わかりやすさのため、上の例と揃えてますが実際には実行ごとに異なります)
UNIX秒は今現在の時刻を表記するなら10桁なので、ミリ秒表記の3桁を足して1~13桁をcutで切り出せば、
疑似的なUNIXミリ秒ができる……というわけです。

$ date +%s%N | cut -b 1-13
1616512600183