日時フォーマット変換

概要

日付フォーマット変換ツールは、任意の日付文字列またはタイムスタンプを入力として受け取り、10種類の一般的なフォーマット(Unix timestamp、ISO 8601、RFC 3339、RFC 7231、UTC、ISO 9075、MongoDB ObjectId、Excelシリアル番号、JavaScriptタイムスタンプ、カスタムフォーマット)の対応値を一覧表示します。データベース・API・システム間の日付フォーマットの不一致を解消する際の素早い参照ツールです。

各フォーマットの用途

フォーマット主な用途
ISO 86012024-12-19T10:30:45.123ZJSON API、データベース保存、国際化アプリ
ISO 90752024-12-19 10:30:45.123MySQL、PostgreSQLクエリ
RFC 33392024-12-19T10:30:45+09:00インターネットプロトコル、OpenAPI仕様
RFC 7231Thu, 19 Dec 2024 10:30:45 GMTHTTPヘッダー: Last-Modified、Expires
Unix timestamp(秒)1703038245システムログ、キャッシュTTL、トークン有効期限
JavaScriptタイムスタンプ(ms)1703038245123Date.now()、フロントエンドの時刻比較
MongoDB ObjectId675436e50000000000000000ドキュメントの作成日時を逆引きする
Excelシリアル番号45644.4378Excelインポート/エクスポート、財務レポート

タイムゾーン処理の境界ケース

ツールはdayjsで入力を解析するため、タイムゾーンの扱いはフォーマットによって異なります。

  • ISO 8601 / RFC 3339: 入力に+09:00Zなどのオフセットが含まれている場合、dayjsはそれを保持し、RFC 3339の出力に正しいオフセットが含まれます。
  • ローカルフォーマット: ブラウザの現在のシステムタイムゾーンを使用します。同じ入力でもタイムゾーンが異なるマシンでは異なる「ローカル」文字列が生成されます。
  • ISO 9075 / RFC 7231: ローカルタイムゾーンでフォーマットされます。タイムゾーンをまたいで結果を共有する際は注意が必要です。
  • Unix timestamp / UTC: 常にUTCで、タイムゾーンの曖昧さがありません。システム間で時刻を受け渡す最も安全なフォーマットです。

サマータイムの境界: 入力時刻がサマータイムの切り替え点(欧米の秋の調整日の午前2時など)に当たる場合、一部のフォーマットの変換結果が重複または欠落することがあります。これはタイムゾーン仕様そのものの特性で、ツールの不具合ではありません。

MongoDB ObjectIdから作成日時を取り出す

ObjectIdの最初の8桁の16進数はUnix timestamp(秒)をエンコードしています。ツールはその8桁を取り出し、後ろに16個のゼロを付加して有効な24文字のObjectIdを生成します。逆方向も対応しており、実際のObjectIdを貼り付けると最初の8文字からドキュメントの作成時刻を導き出せます。

カスタムフォーマットの構文

カスタムフォーマットフィールドはdayjsのフォーマットトークンを受け付けます。よく使うトークン:

  • YYYY — 4桁の年; YY — 2桁
  • MM — 月(01-12); DD — 日(01-31)
  • HH — 24時間制; hh — 12時間制; mm — 分; ss — 秒
  • X — Unix秒; x — Unix ミリ秒

MM(月)とmm(分)、HH(24時間)とhh(12時間)を混同することがカスタムパターンで予期しない出力が発生する最もよくある原因です。