エポック時間を読みやすい日付に変換する方法
人気のプログラミング言語で Unix タイムスタンプを読みやすい日付に変換する実践的なガイド。オンラインツールとタイムゾーンを考慮した例付き。
エポック時間とは?
エポック時間(Unix 時間、POSIX 時間とも呼ばれます)は、1970 年 1 月 1 日 00:00:00 UTC からの経過秒数です。コンピューティングで時点を表す世界共通の標準です。ほぼすべての言語と OS がネイティブに対応しており、システム間でタイムスタンプを保存・交換するのに最も信頼できる形式です。
ステップ 1 — タイムスタンプの形式を見分ける
変換の前に、タイムスタンプが秒かミリ秒かを判断します:
- 10 桁(例:1700000000)→ Unix エポックからの秒
- 13 桁(例:1700000000000)→ Unix エポックからのミリ秒
- 迷ったら 1000 で割り、年が妥当か確認する
- 上のコンバーターに貼り付ければ自動判別もできます
JavaScript で epoch を日付に変換
JavaScript の Date コンストラクターはミリ秒を受け取ります。秒単位の場合は、まず 1000 を掛けてください。
- new Date(1700000000 * 1000).toISOString() → '2023-11-15T06:13:20.000Z'
- new Date(1700000000 * 1000).toUTCString() → 'Wed, 15 Nov 2023 06:13:20 GMT'
- new Date(1700000000 * 1000).toLocaleString('en-US', { timeZone: 'America/New_York' })
- new Date(1700000000000).getTime() → 1700000000000 (milliseconds back)
Python で epoch を日付に変換
Python の datetime モジュールは、ローカル時刻用の fromtimestamp() と UTC 用の utcfromtimestamp() を提供します。明示的なタイムゾーン処理には timezone.utc パラメーターを使います。
- datetime.datetime.fromtimestamp(1700000000) → local timezone
- datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc) → UTC (Python 3.2+)
- datetime.datetime.fromtimestamp(1700000000).strftime('%Y-%m-%d %H:%M:%S') → formatted string
- datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc).isoformat() → ISO 8601
PHP で epoch を日付に変換
PHP の date() 関数と DateTime クラスは Unix タイムスタンプを直接サポートします。
- date('Y-m-d H:i:s', 1700000000) → '2023-11-15 06:13:20' (server's local timezone)
- gmdate('Y-m-d H:i:s', 1700000000) → '2023-11-15 06:13:20' (always UTC)
- $dt = new DateTime(); $dt->setTimestamp(1700000000); $dt->format('c') → ISO 8601
Go で epoch を日付に変換
Go の time パッケージは time.Unix(seconds, nanoseconds) で Unix タイムスタンプを変換します。
- time.Unix(1700000000, 0) → time.Time in local timezone
- time.Unix(1700000000, 0).UTC() → force UTC
- time.Unix(1700000000, 0).Format(time.RFC3339) → '2023-11-15T06:13:20Z'
- time.Unix(1700000000, 0).Format('2006-01-02 15:04:05') → custom layout
エポック時間変換でよくある間違い
Unix タイムスタンプでよくある間違い:
- JavaScript で秒に 1000 を掛け忘れる — new Date(1700000000) は 2023 年ではなく 1970 年になる
- JavaScript のミリ秒を、サーバーサイド言語でそのまま秒として使う
- タイムゾーンを指定せず、環境によって異なるサーバーのローカルタイムゾーンに依存する
- タイムスタンプを整数ではなく文字列で保存し、数値比較や演算が壊れる
epoch から日付への FAQ
- エポック時間を日付に変換するには?
- 値が秒(10 桁)かミリ秒(13 桁)かを見分け、言語の日付 API で変換します — JavaScript なら new Date(seconds * 1000)、Python なら datetime.fromtimestamp(seconds, tz=timezone.utc)、または上のコンバーターに貼り付けます。
- なぜエポックのタイムスタンプが 1970 年に変換される?
- ミリ秒を期待する関数(多くは JavaScript の new Date())に秒の値を渡しています。10 桁の秒値をまず 1000 倍してください。
- エポック時間は UTC とローカル時刻のどちらに変換すべき?
- ログ・API・サーバー間の比較には UTC を使い、表示のときだけユーザーのローカルタイムゾーンに変換します。エポック値自体はタイムゾーンに依存しません。