UNIXタイムスタンプ変換ツール | オンラインで日時を相互変換
現在のUNIXタイムスタンプ
タイムスタンプ → 日時
日時 → タイムスタンプ
UNIXタイムスタンプ変換ツール(オンラインUNIX時間変換器)
このUNIXタイムスタンプ変換ツールを使用すると、UNIX時間(エポックタイム / POSIXタイム)を日付と時刻に、またはその逆に素早く変換できます。秒単位とミリ秒単位のタイムスタンプをサポートし、ローカル時間、UTC、ISO 8601を表示し、結果はワンクリックでコピーできます。
UNIXタイムスタンプ(エポックタイム / POSIXタイム)とは?
UNIXタイムスタンプとは、1970年1月1日 00:00:00 UTCからの秒数(いわゆるUNIXエポック)として時間を表現する数値です。実際には、システム、データベース、API、ロギングにおいて、日付と時刻を保存および転送するための最も広く使用されている形式の1つです。
例: 1700000000 は 2023年11月14日 22:13:20 UTC に相当します。
なぜ1970年1月1日なのか?
エポックの開始(1970年1月1日)は、UNIXの設計時に実用的な参照点として選ばれました。システムの開発期間に近く、時間の計算を簡素化できるためです。
UNIXタイムスタンプ:秒単位 vs ミリ秒単位
UNIXタイムスタンプは、主に2つの形式で存在します。
| タイムスタンプの形式 | 例 | 一般的な用途 |
|---|---|---|
| 秒 (s) | 1700000000 | データベース、バックエンド、API、ファイル |
| ミリ秒 (ms) | 1700000000000 | JavaScript (Date.now())、分析、詳細ログ |
どちらの形式かを見分けるには?
- 「今日の」日付の場合、秒単位のタイムスタンプは通常10桁です。
- ミリ秒単位のタイムスタンプは通常13桁で、およそ1000倍大きいです。
- 目安として、値が > 10¹² の場合、ほぼ確実にミリ秒単位です。
UNIXタイムスタンプ変換ツールの使い方
1) タイムスタンプ → 日時
- フィールドにUNIXタイムスタンプを入力するか、「現在」(現在のUNIX時間)をクリックします。
- タイムスタンプがミリ秒単位の場合は、「ミリ秒を使用」オプションを有効にします。
- 「変換」をクリックします(またはEnterキーを押します)。
- ローカル時間、UTC、ISO 8601への変換が表示されます。
- 結果をクリックすると、クリップボードにコピーされます。
2) 日時 → タイムスタンプ
- フォームで日付と時刻を選択します。
- 「変換」をクリックします。
- 結果は秒単位とミリ秒単位のタイムスタンプとして表示されます。
UNIXタイムスタンプが最もよく使われる場所
UNIX時間は、ITで時間を扱うほとんどすべての場所で見られます。
- データベース – MySQL、PostgreSQL、SQLiteなどで時間を保存し、比較するため。
- API – REST/GraphQLは、タイムスタンプとして時間を返すことがよくあります(簡単なシリアル化のため)。
- ログと監視 – イベントを時間順に正確に並べ替えるため。
- Git – コミットには時間データが含まれています。
- ファイルシステム – mtime/ctime/atime(最終変更日時など)として。
- JWT –
iat(発行時刻)およびexp(有効期限)クレームは、通常エポック秒です。 - Linux/Unixシェル –
date +%sは現在のタイムスタンプを返します。 - JavaScript –
Date.now()は時間をミリ秒単位で返します。
UNIX時間変換の具体的な例
JavaScript (タイムスタンプ ↔ 日付)
// 現在のUNIXタイムスタンプ(秒)
const tsSeconds = Math.floor(Date.now() / 1000);
// 現在のタイムスタンプ(ミリ秒)
const tsMs = Date.now();
// タイムスタンプ (s) -> 日付
const dateFromSeconds = new Date(1700000000 * 1000);
console.log(dateFromSeconds.toISOString());
// 日付 -> タイムスタンプ (s)
const ts = Math.floor(new Date("2024-01-01T00:00:00Z").getTime() / 1000);
console.log(ts);
Python (タイムスタンプ ↔ datetime)
import time
from datetime import datetime, timezone
# 現在のタイムスタンプ(秒)
ts = int(time.time())
# タイムスタンプ -> datetime (UTC)
dt_utc = datetime.fromtimestamp(1700000000, tz=timezone.utc);
# 日付 -> タイムスタンプ
ts2 = int(datetime(2024, 1, 1, tzinfo=timezone.utc).timestamp());
SQL (MySQL)
-- 現在のUNIXタイムスタンプ(秒)
SELECT UNIX_TIMESTAMP();
-- タイムスタンプ -> 日付
SELECT FROM_UNIXTIME(1700000000);
-- 日付 -> タイムスタンプ
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00');
タイムゾーン:UTC、ローカル時間、ISO 8601
UNIXタイムスタンプは常にUTCです。タイムゾーンや夏時間の情報は含まれていません。ローカル時間への変換は、ブラウザ、サーバー、または使用されるライブラリの設定に依存します。
知っておくと役立つ用語:
- UTC – 夏時間/冬時間のないグローバル標準。
- GMT – 通常の使用ではUTCと実質的に同じです。
- オフセット – UTCからのずれ(例: プラハは冬にUTC+1、夏にUTC+2)。
UNIXタイムスタンプの制限と2038年問題
2038年問題 (Year 2038 Problem)
一部の32ビットシステムでは、タイムスタンプが最大値2,147,483,647のint32として保存されます。これは2038年1月19日 03:14:07 UTCに相当します。この値を超えると、オーバーフローが発生し、時間が誤って表示される可能性があります。現代の64ビットシステムでは、通常この問題はありません。
64ビットUNIX時間の範囲
64ビット値は非常に広範囲の期間をカバーします(実際には「永遠に」)。負の値は1970年1月1日より前の日付を意味します。
FAQ – UNIXタイムスタンプに関するよくある質問
UNIXタイムスタンプはUTCですか、それともローカル時間ですか?
UNIXタイムスタンプは常にUTCです。ローカル時間は、タイムゾーンに基づいて変換されたときに初めて生成されます。したがって、変換ツールは通常、UTCとローカル時間の両方を表示します。タイムスタンプが秒単位かミリ秒単位か、どうすればわかりますか?
現在の時刻の場合、秒単位のタイムスタンプは通常10桁です。ミリ秒単位は通常13桁で、およそ1000倍大きいです。目安として、値が > 10¹² の場合、ミリ秒単位である可能性が高いです。負のUNIXタイムスタンプは何を意味しますか?
負のタイムスタンプは、1970年1月1日より前の日付を表します。例えば、-1は1969年12月31日 23:59:59 UTCに相当します。
SQLでUNIXタイムスタンプを変換するにはどうすればよいですか?
MySQLでは、FROM_UNIXTIME(timestamp)を使用して日付に変換し、UNIX_TIMESTAMP(datum)を使用してタイムスタンプに戻します。PostgreSQLでは、通常TO_TIMESTAMP(timestamp)とEXTRACT(EPOCH FROM datum)を使用します。