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秒として扱い、うるう秒を無視するので、実際に経過した秒数をすべて数えているわけではありません。