Time
タイムスタンプ変換ツール
Unix タイムスタンプと日付を変換します。
Unix タイムスタンプについて
Unix タイムスタンプは、1970年1月1日 UTC(「エポック」)からの秒数(またはミリ秒数)を数えたものです。タイムゾーンやカレンダーの表記形式に関係なく、ある瞬間を一意に表す単一の数値であり、そのため多くのシステムは内部的に日付をこの形式で保存・交換しています。
Unix 時間は閏秒を無視することでよく知られています。1 日は正確に 86,400 秒と定義されているため、地球の自転に合わせて時計を調整するまれな閏秒は、数えられるのではなく単に吸収されてしまいます。このため Unix 時間は「真に線形」というより「ほぼ線形」と呼ばれることがあります。より実務的な制約もあります。伝統的な符号付き 32 ビット表現の Unix 時間は 2038 年 1 月 19 日にオーバーフローします。いわゆる「2038 年問題」です。ただし今日のほとんどのシステムはタイムスタンプを 64 ビット値で保存しており、同じオーバーフローをおよそ 2920 億年先まで先送りしています。
使われる場面
- API レスポンスやデータベースの行から created_at や expires_at フィールドを読み取る
- JWT の exp や iat クレームが想定と異なる理由を調べる
- インシデント調査中に、ログのタイムスタンプを自分のローカル時間に変換する
- キャッシュ、トークン、セッションが実際に期限切れになっているかを確認する
よくある質問
タイムスタンプが秒単位かミリ秒単位かはどうすればわかりますか?
最近の日付の場合、秒単位のタイムスタンプは10桁、ミリ秒単位のタイムスタンプは13桁です。このツールは貼り付けた値がどちらかを自動的に判定します。
タイムスタンプが数時間「ずれている」ように見えるのはなぜですか?
Unix タイムスタンプ自体にはタイムゾーンがなく、正確な瞬間を表します。変わるのは表示方法だけです。ここでの UTC とローカルの行は同じ瞬間を、2つの異なるタイムゾーンに合わせて表示しているだけです。
1970年より前の日付にも対応していますか?
はい。負のタイムスタンプはエポックより前の瞬間を表し、このツールは同じ方法でそれらを解析・表示します。
2038 年問題とは何ですか?
伝統的な符号付き 32 ビットの Unix タイムスタンプは、エポックから 2,147,483,647 秒後まで、つまり 2038 年 1 月 19 日 UTC 03:14:07 までしか数えられません。その 1 秒後にオーバーフローして負の数に折り返り、多くの場合 1901 年の日付として読まれてしまいます。まだ 32 ビットのタイムスタンプを使っているシステム(一部の組み込み機器や古い 32 ビットソフトウェア)が影響を受けます。今日のほとんどの 64 ビットシステムはすでにタイムスタンプを 64 ビットで保存しており、同じオーバーフローを実用上意味のある期間をはるかに超えて先送りしています。