Unixタイムスタンプを理解する:開発者向け完全ガイド
2026-05-20 · Development
Unixタイムスタンプとは?
Unixタイムスタンプは、経過秒数の合計として時間を追跡する方法です。1970年1月1日00:00:00 UTCを基準点(「Unixエポック」として知られています)として、それからの秒数をカウントします。
例えば、Unixタイムスタンプ1719000000は、特定の瞬間を表しています:2024年6月22日00:00 UTC頃です。毎秒、この数は1ずつ増加します。
なぜUnixタイムスタンプを使用するのか?
Unixタイムスタンプは、いくつかの理由でソフトウェア開発で広く使用されています:
- タイムゾーンに依存しない: タイムスタンプは世界中で同じ瞬間を表します。EST、PST、JSTのどちらであるかという曖昧さはありません。常にUTCベースです。
- 簡単な比較: 2つのタイムスタンプの比較は、単純な数値の比較です。タイムスタンプAがタイムスタンプBより大きい場合、イベントAはイベントBの後に発生しました。
- 効率的なストレージ: 10桁の整数を保存するのは、"2024-06-22T00:00:00Z"のような形式の日付文字列を保存するよりもはるかに省スペースです。
- 数学演算: タイムスタンプに86,400秒を追加すると、正確に24時間後になります。月の境界やうるう年を気にする必要はありません。
秒対ミリ秒
Unixタイムスタンプには、2つの一般的な形式があります:
- 秒(10桁): 元のUnixタイムスタンプ形式。例:
1719000000 - ミリ秒(13桁): JavaScriptおよび多くの最新のAPIで、より高い精度のために使用されます。例:
1719000000000
これら2つの形式を混同するのが、一般的なバグの原因です。秒を想定している関数にミリ秒タイムスタンプを渡すと、日付は大幅に間違います(約50,000年未来になります)。
異なる言語でのタイムスタンプの扱い
JavaScript
const now = Date.now(); // ミリ秒 const seconds = Math.floor(Date.now() / 1000); const date = new Date(seconds * 1000);
Python
import time seconds = int(time.time()) from datetime import datetime dt = datetime.fromtimestamp(seconds)
PHP
$timestamp = time(); // 秒
$date = date('Y-m-d H:i:s', $timestamp);
MySQL
SELECT UNIX_TIMESTAMP(); -- 現在のタイムスタンプ SELECT FROM_UNIXTIME(1719000000); -- 日付に変換
一般的な落とし穴
- 2038年問題: 32ビットの符号付き整数は、2038年1月19日にオーバーフローします。32ビットタイムスタンプを使用しているシステムは、64ビット整数に移行する必要があります。
- うるう秒: Unixタイムスタンプはうるう秒を考慮していません。ほとんどのシステムは単純にこれを無視します。これは原子時との間にわずかな差異を生じることがあります。
- タイムゾーンの表示: Unixタイムスタンプは常にUTCであることを覚えておいてください。ユーザーに表示するには、ローカルタイムゾーンに変換する必要があります。
TryQuickToolBoxのタイムスタンプ変換ツール
無料ツールは、Unixタイムスタンプ(秒とミリ秒)、ISO 8601日付、UTC時刻、ローカル時刻の間で変換します。自動検出により、任意の形式を貼り付けて瞬時に結果を得られます。結果をクリックすると、クリップボードにコピーされます。