Magicode logo
Magicode
1

【エポック秒】コンソールからSidekiqの情報を見るときに created_at, enqueued_at などが日時じゃなくて謎の数字

問題

実例をあげます。 試しにデッド状態のジョブをひとつ見てみましょう。

created_atenqueued_atfailed_at等がが日時じゃなくてFloat型になっていますね :thinking: 日時を見せてくれ!日時を!

解決策

さっそく解決策です。 Time.atTimeオブジェクトに変換すると日時を見ることができます。

よりよい方法

Time.atだと協定世界時(UTC)になります。 Time.zone.atで変換すると日本標準時(JST)になるので、多くのケースではこちらでよいかなと思います。

解説

では、この数字の正体はいったい何でしょうか? 調べたところどうやら、1970年1月1日午前0時からの経過秒数のようです。

Time オブジェクトは時刻を起算時からの経過秒数で保持しています。起算時は協定世界時(UTC、もしくはその旧称から GMT とも表記されます) の 1970年1月1日午前0時です。

https://docs.ruby-lang.org/ja/latest/class/Time.html#S_AT

こういうのをエポック秒(UNIX秒)というそうです。

https://wa3.i-3-i.info/word18476.html

試してみた

ちょっと便利なワンライナー

デッド状態のジョブをfailed_atの昇順で並びかえた上で、failed_atの一覧を表示します

failed_atenqueued_atなど任意なものに変える

Discussion

コメントにはログインが必要です。