zaqro toolszaqro tools

エポック秒コンバーター

UNIXタイムスタンプ(エポック秒)と人間が読める日時を相互変換します。データは外部に送信されません。

エポック秒を入力すると変換結果がここに表示されます

エポック秒(UNIXタイムスタンプ)とは

エポック秒とは、1970年1月1日 00:00:00 UTC(協定世界時)を起点(エポック)とした経過秒数のことです。 UNIX系OSでの標準的な時刻表現であり、プログラミング言語やデータベースで広く使われています。 タイムゾーンに依存しない一意な時刻表現であるため、システム間の日時データのやり取りに適しています。

なぜ1970年が基準なのか

1970年1月1日が基準に選ばれたのは、UNIXオペレーティングシステムの開発時期に由来します。 UNIXは1969年に開発が始まり、初期のシステムクロックとして「キリの良い」近い過去の日付が採用されました。 当時の32ビット符号付き整数で十分な範囲をカバーできる起点として、1970年1月1日が選ばれました。

秒とミリ秒の違い

エポック秒には主に2つの精度があります。

  • 秒(10桁): UNIX標準。C言語のtime()、PHPのtime()、Pythonのtime.time()など。
  • ミリ秒(13桁): JavaScriptのDate.now()、JavaのSystem.currentTimeMillis()など。

このツールでは入力の桁数から自動判定するほか、手動で単位を指定することもできます。

プログラミング言語での取得方法

JavaScript / TypeScript

// ミリ秒(13桁)
Date.now()
// 秒(10桁)
Math.floor(Date.now() / 1000)

Python

import time
# 秒(float)
time.time()
# 秒(整数)
int(time.time())

PHP

// 秒(10桁)
time()
// ミリ秒
round(microtime(true) * 1000)

Java

// ミリ秒(13桁)
System.currentTimeMillis()
// 秒(10桁)
Instant.now().getEpochSecond()

2038年問題(Y2K38)

32ビット符号付き整数でエポック秒を表現した場合、最大値は 2,147,483,647(2038年1月19日 03:14:07 UTC)です。 この時刻を超えるとオーバーフローが発生し、日時が1901年に戻ってしまう問題を「2038年問題」と呼びます。

現代の64ビットシステムでは事実上この問題は発生しませんが、 組込みシステムやレガシーなデータベースでは依然として注意が必要です。 このツールでは西暦1000年〜9999年の範囲に対応しています。