エポック時間を読みやすい日付に変換する方法

人気のプログラミング言語で 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 を使い、表示のときだけユーザーのローカルタイムゾーンに変換します。エポック値自体はタイムゾーンに依存しません。