日付/時刻コンバーター
Unixタイムスタンプ、ISO 8601日付、RFC 2822形式、US/EU日付スタイル、長い日付、相対表現を処理する包括的な日付・時刻パーサーです。フォーマット間の変換、相対時間の表示、現在のタイムスタンプ参照を提供します。
仕様
よくあるユースケース
- タイムスタンプや日付を含むAPIレスポンスのデバッグ
- ログファイルのタイムスタンプを読みやすい日付に変換
- 異なる地域フォーマットの日付を解析
- イベント間の時間差を計算
- APIリクエスト用のタイムスタンプを生成
- トークンの有効期限を検証(JWT expクレーム)
- 国際チーム向けに日付フォーマット間の変換
機能
- フォーマットの自動検出:Unixタイムスタンプ、ISO 8601、RFC 2822、US/EU日付など
- 秒、ミリ秒、マイクロ秒、ナノ秒のUnixタイムスタンプを解析
- 時刻の有無にかかわらずISO 8601日付を処理(2024-01-25T12:00:00Z)
- USフォーマット(01/25/2024)、EUフォーマット(25.01.2024)、長い日付(January 25, 2024)を解析
- 相対表現を認識:now、today、yesterday、tomorrow
- 相対時間を表示("2時間前"、"3日後")
- 過去/未来/今日のステータスバッジ
- 曜日、週番号、四半期、年間通算日を表示
- カレンダーメトリクスグリッド(年間週番号、四半期、年間通算日)
- 追加情報セクション(タイムゾーン、月の日数、閏年)
- コピーボタン付きで複数の出力フォーマットに変換
- Unixマイクロ秒・ナノ秒出力
- 更新ボタン付き現在時刻リファレンスカード
例
ヒント
- JavaScript Date.now()はミリ秒を返します。ほとんどのUnixツールは秒を使用します。
- ISO 8601フォーマット(2024-01-25T12:00:00Z)は最も移植性が高く明確なフォーマットです。
- 保存にはUTCタイムスタンプを使用し、表示時のみローカル時間に変換してください。
- 日付が曖昧な場合(例:01/02/2024)、ツールはコンテキストの手がかりを使ってフォーマットを判定します。
- "2038年問題"はUnix秒に符号付き整数を使用する32ビットシステムに影響します。
解説 日付/時刻コンバーター
Unixタイムスタンプは、Unixエポック(1970年1月1日 00:00:00 UTC)からの経過秒数として特定の時刻を表現します。このシンプルな整数表現はコンピューティングにおける普遍的な時間フォーマットであり、データベース、API、ファイルシステム、ログファイル、オペレーティングシステムインターフェースで使用されています。このフォーマットは曖昧さがなく、人間が読める日付とは異なり、Unixタイムスタンプはタイムゾーンに関係なく常に正確に一つの時刻を指します。
2つの精度レベルが一般的です。秒精度のタイムスタンプ(10桁、例:1738800000)は、ほとんどのUnix API、データベース、C言語のtime()関数で使用される従来のUnixフォーマットです。ミリ秒精度のタイムスタンプ(13桁、例:1738800000000)は、JavaScript(Date.now())、Java(System.currentTimeMillis())、多くのWeb APIで使用されます。このツールは精度を自動検出し、両方を正しく処理します。
ISO 8601は人間が読める標準的な日時フォーマットです:2025-02-05T12:00:00Z。Tは日付と時刻を区切り、ZはUTC(ズールー時間)を示します。タイムゾーンオフセットは+HH:MMまたは-HH:MM表記を使用します。ISO 8601はJSON Schemaで要求されており、REST APIで広く使用され、あらゆる日時文字列の交換に推奨されています。RFC 2822フォーマット(メールヘッダーで使用)もよく見られるテキスト表現です。
タイムゾーンの処理は日時バグの最も一般的な原因です。開発者はUTCタイムスタンプとローカル時間を混同したり、タイムゾーン変換を誤って適用したり、タイムゾーン情報なしでローカル時間を保存することがよくあります。ベストプラクティスは、常にUTCで時間を保存・送信し、表示時のみローカル時間に変換することです。
Unixタイムスタンプを32ビット符号付き整数で保存しているシステムは、2038年1月19日 03:14:07 UTCにオーバーフローし、1901年12月を表す負の数に変わります。これはY2Kと類似していますが、コンピューティングインフラストラクチャにより広範に影響します。解決策は64ビット整数を使用することで、範囲を数十億年に拡張します。ほとんどの最新システムはすでに64ビット時間を使用していますが、組み込みシステムやレガシーコードにはまだ脆弱性がある可能性があります。
日付をタイムスタンプとフォーマット済み文字列のどちらで保存するかを選択する際は、ユースケースを考慮してください。タイムスタンプ(整数)は、ソート、期間の計算、日付の比較など計算集約型のシナリオに最適です。コンパクトで曖昧さがなく、タイムゾーンに中立です。ISO 8601文字列は、人間の可読性が重要な場合、タイムゾーンコンテキストを保持する必要がある場合、またはデータベースにネイティブのdatetimeタイプがある場合に適しています。例えば、PostgreSQLのtimestamptzは内部的にUTCで保存し、表示時に変換します。
日付が1日ずれる問題は、ほぼ常にタイムゾーンの混乱が原因です。2月5日23:00 UTCのUTCタイムスタンプは、UTC+2タイムゾーンではすでに2月6日です。JavaScriptでは、Date()は日付のみの文字列にはローカル時間を使用しますが、タイムゾーン指定子付きの日時文字列にはUTCを使用します。タイムゾーンを明示的に指定し、保存と送信にUTCを一貫して使用することで、これらの微妙なバグを防ぐことができます。