Toolyard

Unixタイムスタンプとは?

Unixタイムスタンプとは

Unixタイムスタンプは、Unixエポックと呼ばれる1970年1月1日00:00:00(UTC)からの経過秒数です。同じ瞬間なら世界中どこでも同じ数になるので、API、ログ、データベースで使われます。たとえば1700000000は、2023年11月14日22:13:20(UTC)、日本時間では11月15日7:13:20です。

秒かミリ秒か

秒のタイムスタンプは現在10桁です。JavaScript、Java、多くのAPIはミリ秒を使い、13桁になります。1970年の日付や何千年も先の日付が出たら、単位が違っている可能性が高いです。

オンラインで変換する

Unixタイムスタンプ変換に貼り付けると、秒かミリ秒かを判別して、UTCとお住まいのタイムゾーンの日時で表示します。

コードや表計算で

  • JavaScript: new Date(1700000000 * 1000)
  • Python: datetime.fromtimestamp(1700000000, tz=timezone.utc)
  • ExcelやGoogleスプレッドシート: =A1/86400+DATE(1970,1,1)のあと、セルを日付の書式にします。結果はUTCなので、日本時間にするには9時間(+9/24)を足します。
  • MacやLinuxのターミナルで現在時刻: date +%s

2038年問題

タイムスタンプを符号付き32ビット整数で保存しているシステムは、2038年1月19日03:14:07(UTC)にあふれてしまいます。最近のシステムは64ビットを使っていて、何十億年分も余裕があります。

具体例

  • 0 は1970年1月1日 00:00:00 UTCです。
  • 86400 はちょうど1日後の1970年1月2日です。
  • -86400 は1日前の1969年12月31日です。負のタイムスタンプは1970年より前の日付です。
  • 2000000000 は2033年5月18日 03:33:20 UTCです。

よくある間違い

  • タイムスタンプにタイムゾーンがあると思う。ありません。1700000000はどこでも同じ瞬間で、表示だけがタイムゾーンで変わります。
  • ローカル時刻をUTCとみなしてタイムスタンプを作る。結果がUTCとの時差分ずれます。日本ならちょうど9時間です。変換後に既知の日付で確かめましょう。
  • JavaScriptの月。new Date(2026, 0, 15) は1月15日です。月は0から数えます。
  • うるう秒。Unix時間は毎日をちょうど86,400秒として扱い、うるう秒を無視するので、実際に経過した秒数をすべて数えているわけではありません。

このガイドで使うツール

その他のガイド