YamlBox

ウェブとエンコーディング · 5 分で読みました

タイムスタンプコンバータ: 推測に頼らないエポックタイム

Unix 時間は、1970-01-01T00:00:00 UTC からの秒数です。これは、すべてのシステムが理解し、ほぼすべての開発者が少なくとも 1 回は読み間違えた単一の整数です。タイムスタンプ コンバーターは、その整数を人間がチェックして元に戻すことができるものに変換します。これは通常、すべてのログ調査が開始する質問「これが実際にいつ起こったのか?」に答える最も早い方法です。

更新されました

秒またはミリ秒: 発生し続けるバグ

Ten digits is seconds; 13 はミリ秒です。間違えると日付が 1970 年か今から数千年後になってしまいます。この間違いは一度見ればすぐにわかるものであり、だからこそ認識する価値があるのです。 JavaScript の `Date.now()` はミリ秒を返しますが、ほとんどのサーバー言語とデータベースは秒を格納するため、ブラウザと API の間の境界が通常間違いが発生する場所です。

                1760000000     → 2025-10-09 09:33:20 UTC   (seconds)
1760000000000  → 2025-10-09 09:33:20 UTC   (milliseconds)
              

UTC is the truth;現地時間はプレゼンテーションの選択です

エポック値は定義上 UTC であるため、明確です。これを表示すると、混乱が生じます。同じ瞬間であっても、タイムゾーンごとに実時間は異なり、「午後 3 時に発生しました」というサポート チケットは、タイムゾーンが関連付けられている場合にのみ役に立ちます。エポックまたは ISO 8601 UTC を保存および送信し、表示のために現地時間に変換し、人間が読み取るものには常にゾーンを含めます。

実際の作業でタイムスタンプが表示される場所

  • ログ行 — 最も早い方法は、意味を読み取る前にエポック列を読み取り可能な日付に変換することです。
  • API 応答 — `created_at`、`expires_at`、およびキャッシュ ヘッダーは、すべて変換されるとさらに便利になります。
  • JWT の主張 — `exp` と `iat` はエポック秒であるため、有効期限チェックは 1 回の減算となります。
  • データベース行 - 保存されたエポックと現在との比較は算術演算です。 「先週の火曜日」と比較するには変換が必要です。

タイムゾーンのないタイムスタンプはリーダーを待っているバグです。印刷された日付は、2025-10-09T09:33:20Z のように、明示的なオフセットを使用して ISO 8601 に属します。

2038 年の境界

2038-01-19 にエポックが切れてからの署名付き 32 ビット秒。そのストレージ上に構築されたシステム (古い MySQL カラムや 32 ビット time_t プラットフォームを含む) は、それ以降の日付を表すことができず、障害モードはエラーではなく 1901 にラップされます。今後 10 年間存続することを意図したものを設計している場合は、今すぐ 64 ビット整数またはネイティブの日付型を保存してください。移行は後でさらに困難になるだけです。

ブラウザで双方向に変換

YamlBox タイムスタンプ コンバータは秒またはミリ秒を受け入れ、UTC とローカルの解釈を ISO 8601 出力と並べて表示し、日付からエポックまで逆方向に進みます。完全にクライアント側で実行されるため、運用ログのタイムスタンプがマシンから流出することはありません。

タイムスタンプコンバータ — よくある質問

私のタイムスタンプに 1970 年の日付が表示されるのはなぜですか?

ほとんどの場合、単位の不一致が発生します。ミリ秒が秒として解釈されたり、フィールドにデータが入力されなかったため値がゼロになったりします。必要に応じて 1000 で乗算または除算します。10 桁と 13 桁の違いが診断全体となります。

エポックタイムと ISO 8601 の違いは何ですか?

それらは同じ瞬間を描写しています。エポックは UTC 秒単位の整数で、コンパクトで演算や保存に最適です。 ISO 8601 はオフセット付きの可読文字列であり、可読性を維持する必要がある人間、ログ、API にとって優れています。

Unix タイムスタンプにはタイムゾーンが含まれますか?

いいえ — エポック値は常に UTC です。そのレンダリングのみがタイムゾーンを持っています。そのため、ローカル日付に変換するには、リーダーがどのゾーンにいるのかを知る必要があり、なぜ 2 人の開発者が同じタイムスタンプについて意見が異なり、どちらも正しいのに同じタイムスタンプが存在するのはなぜでしょうか。

この投稿で言及されているツール

19 ツールの完全なリストを参照する

さらに読む記事

すべての 19 投稿 →