epoch ミリ秒を日付に:13 桁のタイムスタンプと long 値を変換

epoch ミリ秒を読みやすい日付に変換するガイド。13 桁のタイムスタンプ、JavaScript の Date、Java の long 値、ミリ秒対秒、そしてなぜ誤った単位が 1970 年や遠い未来の日付を生むのかを扱います。

epoch ミリ秒とは

epoch ミリ秒は、1970 年 1 月 1 日 00:00:00 UTC からのミリ秒を数えます。Unix 秒と同じ Unix エポックを使いますが、精度が 3 桁多くなります。現代の epoch ミリ秒の値は通常 13 桁で、1700000000000 のようになります。

ミリ秒を日付に変換する方法

値がすでにミリ秒なら、JavaScript Date はそのまま読めます。受け取るツールが秒を期待する場合は、まず 1000 で割ります。主なミスは、間違った境界で掛けたり割ったりすることです。

  • JavaScript: new Date(1700000000000).toISOString()
  • Milliseconds to seconds: Math.floor(1700000000000 / 1000)
  • Seconds to milliseconds: 1700000000 * 1000
  • Java Instant: Instant.ofEpochMilli(1700000000000L)
  • Python: datetime.fromtimestamp(ms / 1000, tz=timezone.utc)

Java やデータベースでの long から日付

「long から日付」の検索は、タイムスタンプを 64 ビット整数で保存する Java・Kotlin・Android・データベースのエクスポートから来ることが多いです。値は epoch ミリ秒のこともありますが、秒・マイクロ秒・ナノ秒のこともあります。変換前に桁数を確認してください。

  • 10 桁:おそらく Unix 秒
  • 13 桁:おそらく Unix ミリ秒または Java の long ミリ秒
  • 16 桁:おそらくマイクロ秒
  • 19 桁:おそらくナノ秒
  • 列には常に単位を付けて名前を付ける(例:created_at_ms)

なぜミリ秒が奇妙な日付になるのか

ミリ秒の値を秒として扱うと、極端に遠い未来の日付になります。秒の値をミリ秒として扱うと、1970 年 1 月付近の日付になります。桁数が最も速い診断です。

  • 1700000000000 をミリ秒として = 2023-11-14 22:13:20 UTC
  • 1700000000000 を秒として = ライブラリにより西暦 55840 年あたり
  • 1700000000 を秒として = 2023-11-14 22:13:20 UTC
  • 1700000000 をミリ秒として = 1970-01-20 16:13:20 UTC

epoch ミリ秒 FAQ

ミリ秒の epoch 時間は Unix タイムスタンプと同じ?
同じエポックを使いますが、単位が秒ではなくミリ秒です。古典的な Unix タイムスタンプは通常、秒を意味します。
epoch ミリ秒のタイムスタンプは何桁?
現在の日付では、epoch ミリ秒は通常 13 桁です。
JavaScript はミリ秒それとも秒?
JavaScript Date はミリ秒を使います。Date.now() は epoch ミリ秒を返します。
Java の long タイムスタンプを日付に変換するには?
long が epoch ミリ秒なら Instant.ofEpochMilli(value)、epoch 秒なら Instant.ofEpochSecond(value) を使います。まず桁数を確認してください:13 桁はミリ秒、10 桁は秒が普通です。