> タイムスタンプ | エポック | 変換 <
// Unixタイムスタンプと日付を瞬時に相互変換
リアルタイム時計
リアルタイムで更新されるUnixタイムスタンプ表示。現在のepoch時間をリアルタイムで確認。
双方向変換
タイムスタンプを読みやすい日付に、日付をタイムスタンプに変換。両方向対応。
複数フォーマット
ISO 8601、RFC 2822、UTC、ローカル時間、相対時間で結果を表示。
// UNIXタイムスタンプについて
Unixタイムスタンプの仕組み:
Unixタイムスタンプ(epoch時間またはPOSIX時間とも呼ばれる)は、1970年1月1日 00:00:00 UTC(Unixエポック)から経過した秒数を表します。このシンプルな整数値は、タイムゾーンに依存しない普遍的な時間表現方法を提供します。
例:
1711324800 → 2024-03-25T00:00:00.000Z
一般的な使用例:
- >データベースのタイムスタンプ保存とクエリ
- >APIレスポンスの時間フィールド
- >ログファイルのタイムスタンプ分析
- >時間関連の問題のデバッグ
- >タイムゾーン間の時間調整
- >Y2K38問題: 32ビット符号付き整数は2038年1月19日にオーバーフロー
>> よくある質問
Q: Unixタイムスタンプとは?
A: Unixタイムスタンプは1970年1月1日 00:00:00 UTCからの経過秒数です。コンピューティングで普遍的に使用されるシンプルな整数値です。
Q: エポック時間とは?
A: エポック時間はUnixタイムスタンプの別名です。「エポック」は基準点で1970年1月1日 00:00:00 UTCを指します。
Q: Y2038問題とは?
A: 2038年問題(Y2K38)は、多くのシステムがUnixタイムスタンプを32ビット符号付き整数で保存しており、2038年1月19日 03:14:07 UTCまでしか表現できないために発生します。
Q: 秒とミリ秒のタイムスタンプの違いは?
A: 秒単位のUnixタイムスタンプは10桁(例: 1711324800)、ミリ秒は13桁(例: 1711324800000)です。
Q: Unixタイムスタンプは負の値になれますか?
A: はい、負のUnixタイムスタンプは1970年1月1日以前の日付を表します。例えば、-86400は1969年12月31日を表します。
// よく使われるエポック値
タイムスタンプのデバッグに役立つ基準値です。日時はすべて UTC です。
| エポック値 | 日時(UTC) |
|---|---|
| 0 | 1970-01-01 00:00:00 |
| 86400 | 1970-01-02 00:00:00 |
| 946684800 | 2000-01-01 00:00:00 |
| 1000000000 | 2001-09-09 01:46:40 |
| 1234567890 | 2009-02-13 23:31:30 |
| 1700000000 | 2023-11-14 22:13:20 |
| 2000000000 | 2033-05-18 03:33:20 |
| 2147483647 | 2038-01-19 03:14:07 |
| 4294967295 | 2106-02-07 06:28:15 |
// コードでエポックを日付に変換
JavaScript new Date(epoch * 1000).toISOString()
Python datetime.fromtimestamp(epoch, tz=timezone.utc)
PHP gmdate('c', $epoch)
Go time.Unix(epoch, 0).UTC()
Java Instant.ofEpochSecond(epoch)
MySQL FROM_UNIXTIME(epoch)
Bash date -u -d @$epoch # macOS: date -u -r $epoch
>> その他の質問
Q: Unix時間が1970年1月1日から始まるのはなぜですか?
A: 1971年頃、ベル研究所の初期の Unix 開発者が、32ビットのカウンタを小さく保てるよう、単純でキリがよく当時は新しい日付を選びました。それが定着し、現在ほとんどのシステムの標準エポックになっています。
Q: ExcelやGoogleスプレッドシートでエポックを日付に変換するには?
A: A1にエポック秒がある場合、=(A1/86400)+25569 を入力してセルを日付/時刻形式にします。ミリ秒なら 86400000 で割ります。逆変換は =(A1-25569)*86400 です。
Q: エポック変換結果が想定と違う日付になるのはなぜですか?
A: 主な原因は、秒とミリ秒の取り違え(13桁はミリ秒)、タイムゾーン表示の違い(同じエポックでも UTC とローカルで時刻が異なる)、別のエポックを使うシステム(NTP は 1900 年、Windows FILETIME は 1601 年)です。
Q: エポック値の最大値はいくつですか?
A: 符号付き32ビットは 2,147,483,647(2038-01-19 03:14:07 UTC)、符号なし32ビットは 4,294,967,295(2106-02-07 06:28:15 UTC)が上限です。64ビットなら数千億年分を表せます。