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時刻、ローカル時刻の間で変換します。自動検出により、任意の形式を貼り付けて瞬時に結果を得られます。結果をクリックすると、クリップボードにコピーされます。

今すぐタイムスタンプを変換する →