Unixタイムスタンプ変換
はじめに
Unixタイムスタンプ(またはエポックタイム)は、コンピュータが時間を表現する標準的な方法です。1970年1月1日UTC午前0時からの秒数(うるう秒を除く)を単一の整数で表します。データベースレコード、APIレスポンス、JWTトークン、ログファイル、cronスケジュール、キャッシュ有効期限ヘッダなどに登場します。マシンはこれらの整数を即座に読み取りますが、人間はそれらをカレンダー日付と時刻に変換する必要があります — 多くの場合、複数の形式で同時に必要です。
Unixタイムスタンプ変換ツールは、ログからタイムスタンプをデコードしたり、トークンの有効期限を確認したり、タイムゾーンをまたいでcronジョブをスケジュールしたり、過去または将来のエポック値をすばやく調べたりする必要がある開発者、システム管理者、セキュリティアナリスト向けです。ツールは2つの独立したブロックに分かれています:
- ブロックA(Unixタイムスタンプ → 日時):数値のタイムスタンプを入力すると、21の日付と時刻の形式で表示されます。標準ファミリごとに整理されています。
- ブロックB(日時 → Unixタイムスタンプ):カレンダー日付、時刻、タイムゾーンオフセットを選択すると、秒、ミリ秒、マイクロ秒の相当するタイムスタンプが得られます。
両方のブロックに独自のタイムゾーンセレクタがあるため、一方でUTCを使用し、他方でカスタムオフセットを使用しても相互に影響しません。
仕組み
Unix時間はエポック(1970年1月1日00:00:00 UTC)からの秒数をカウントします。各 tick は正確に1秒を加算します。UTCに固定されているため、Unixタイムスタンプは地球上のどこでも同じ瞬間を表します — タイムゾーンが問題になるのは、人間が読み取れる文字列としてレンダリングするときだけです。
このツールは、すべての変換にブラウザのネイティブJavaScript Dateオブジェクトを使用します。すべてのDateは内部で時間をUnixエポックからのミリ秒という単一の数値として保存します。タイムスタンプを入力すると、ツールはDateを構築し、アクティブなタイムゾーンセレクタに応じてUTCまたはローカルのプロパティを読み取ります。カレンダー日付と時刻を入力すると、ツールは指定されたタイムゾーンオフセットで調整されたエポックからの差を計算します。
エコシステム別のタイムスタンプ単位
プラットフォームや言語によって異なるエポック単位が使用されます。ツールの単位セレクタを使用して、ソースの精度に合わせることができます:
| 単位 | 使用例 | 例 |
|---|---|---|
| 秒 | Go、PHP、Python、PostgreSQL、Ruby、cron | 10桁 |
| ミリ秒 | JavaScript(Date.now())、Ethereum、.NET DateTimeOffset、Java System.currentTimeMillis() |
13桁 |
| マイクロ秒 | Linux /proc/uptime、Go time.UnixMicro()、高解像度プロファイリング |
16桁 |
ツールは入力値を内部的に秒に変換します。JavaScriptのDate.now()から13桁の値を貼り付ける場合は、単位をミリ秒に設定するとツールが除算を処理します。
タイムゾーンと夏時間
Unixタイムスタンプは常に同じ物理的な瞬間を表します。各ブロックのタイムゾーンセレクタは、その瞬間が表示または解釈される方法を変更するだけです。
- UTCモード:すべての出力を協定世界時に基づいてレンダリングします。RFC 3339形式では、
+00:00の代わりにリテラルのZサフィックスを使用します。 - ローカルモード:ブラウザのシステムタイムゾーンを使用し、夏時間の自動調整を含みます。
- カスタムモード:-12:00から+14:00の間の数値UTCオフセット。ツールはこのオフセットをDST補正なしで直接適用します — オフセットを固定の壁時計として扱います。
夏時間が有効な場合、ローカルタイムゾーンオフセットが変わります。同じタイムスタンプをローカルモードで表示すると、前の月とは異なる時刻が表示される可能性があります。これは想定内です:タイムスタンプは同じですが、ローカルの時計の慣習が変わったのです。
ロケール形式の行(Locale、Locale Date、Locale Time)については、ツールは選択されたタイムゾーンとブラウザの言語設定の両方を尊重します。UTCモードを選択した場合、toLocaleStringは{ timeZone: 'UTC' }を受け取り、ロケール形式が正しいタイムゾーンを使用することを保証します。
使い方
ブロックA — タイムスタンプから日時へ
- Unixタイムスタンプを入力フィールドに入力します(数字のみ、1970年以前の場合はオプションでマイナス記号)。
- 入力精度を選択します:秒、ミリ秒、またはマイクロ秒。
- タイムゾーンを選択します:UTC、ローカル(システムタイムゾーン)、またはカスタム(-12から+14の間で30分刻みのオフセットを入力)。
- 結果を読み取ります — 21の日付と時刻の形式行がリアルタイムで更新されます。
ブロックB — 日時からタイムスタンプへ
- 年を直接入力します。月、日、時、分、秒はドロップダウンメニューを使用します。
- UTC/GMTセレクタからタイムゾーンを選択します:ローカルはシステムタイムゾーンに一致します。
UTC+8のような数値入力は、そのゾーンの壁時計時刻として入力を扱います。 - タイムスタンプの結果が秒、ミリ秒、マイクロ秒、16進数、相対時間ですぐに表示されます。
2つのブロックは独立して動作します。ブロックAを変更してもブロックBに影響はなく、その逆も同様です。これにより、タイムスタンプを並べて比較したり、さまざまな形式を探索しながら参照値を固定したりできます。
チュートリアル
シナリオ1:サーバーログからタイムスタンプをデコードする
アプリケーションログにタイムスタンプ1742345678が表示されています — 失敗したAPI呼び出しです。それが正確にいつ発生したかを知り、HTTPレスポンスヘッダとの関連付けのためにHTTP-date形式も確認する必要があります。
- Unixタイムスタンプ変換ツールを開きます。
- ブロックAの入力フィールドに
1742345678と入力します。 - 結果には21の形式行が表示されます。含まれるもの:
- @ Format:
3/19/2025 @ 2:14:38 PM +0000(クイックスキャン用の人間向け形式) - RFC 1123Z:
Wed, 19 Mar 2025 14:14:38 +0000(HTTP-date標準、DateおよびLast-Modifiedヘッダに一致) - 相対時間:
124d(リクエストが発生してからの経過時間)
- @ Format:
- タイムゾーンをローカルに切り替えて、自分のタイムゾーンでの時刻を確認します。
シナリオ2:特定の時間にcronジョブをスケジュールする
2026年6月15日午前3時30分Eastern Timeに実行されるcronジョブが必要です。Eastern Daylight Timeは6月はUTC-4です。
- ブロックBで、日付を2026年6月15日、時刻を03:30:00に設定します。
- UTC/GMTセレクタを
UTC+4に設定します(EDTはUTC-4なので、-4を入力します)。 - 秒の値を読み取ります — これがcronタイムスタンプです。16進数と相対時間の行も更新され、機械可読と人間可読の両方の参照が同時に得られます。
プロのヒント
形式のユースケース
各出力形式には特定の目的があります。それぞれを使用するタイミングは次のとおりです:
| 形式 | 使用するタイミング |
|---|---|
| @ Format | クイックな視覚スキャン — コンパクトなM/D/YYYY @ HH:MM:SS AM/PMレイアウトは一目で読めます |
| DateTime | SQLデータベース挿入(YYYY-MM-DD HH:MM:SS)、JSON以外で最も一般的な文字列形式 |
| ISO 8601 | JSONペイロード(new Date().toISOString())、REST APIリクエスト/レスポンスボディ |
| RFC 3339 | RSSフィード、Atomフィード、カレンダー購読(iCalendar)。ISO 8601により厳密なプロファイルが必要な場合に使用 |
| RFC 1123Z | HTTPヘッダ(Date、Last-Modified、Expires)、Cookie(expires属性) |
| RFC 822 | メールヘッダ(Dateフィールド)、レガシーニュースグループ形式 |
| RFC 850 | 古いHTTP/1.0実装(現在は稀、後方互換性のために維持) |
| ANSIC | Goのtime.ANSIC定数 — Goのtime.Timeデフォルト出力を読むときに使用 |
| RubyDate | RubyのTime#ctime形式。古典的なUnixのctime出力と一致 |
| DateOnly / TimeOnly | Go 1.20+の便利な定数 — 日付のみ、または時刻のみを抽出 |
| Kitchen | Goの12時間時計形式 — クイックな壁時計の読み取り |
| Locale | ユーザーインターフェース表示。ブラウザの言語と文化的慣習を尊重 |
| Hex | 低レベルデバッグ、ファームウェアタイムスタンプ、組み込みシステム |
| 相対時間 | ダッシュボード表示、「最終イベントからの経過時間」UI要素 |
言語別実装
各言語で現在のUnixタイムスタンプを取得する方法:
// Go
time.Now().Unix() // 秒
time.Now().UnixMilli() // ミリ秒 (Go 1.17+)
// JavaScript
Math.floor(Date.now() / 1000) // 秒
Date.now() // ミリ秒
// PHP
time(); // 秒
intval(microtime(true) * 1000); // ミリ秒
# Python
import time; int(time.time()) # 秒
import time; int(time.time() * 1000) # ミリ秒
一般的なヒント
- 1970年より前のタイムスタンプ:負の値を入力します。1960年12月1日00:00:00 UTCは
-286329600です。 - 16進数入力:16進数値(
0xプレフィックスの有無にかかわらず)は自動的に解析されます —0x6618E1FEを入力すると10進数の等価値が表示されます。 - タイムゾーンの比較:ブロックAのタイムゾーンをUTCに、ブロックBのタイムゾーンをローカルに同時に設定すると、同じ瞬間が両方でどのようにレンダリングされるかを確認できます。
代替手段
| ツール | タイムスタンプ→日付 | 日付→タイムスタンプ | 21+形式 | ブロック別独立タイムゾーン | クライアント側 |
|---|---|---|---|---|---|
| Toollect Unixタイムスタンプ変換 | はい | はい | はい(21) | はい | はい |
| unixtimestamp.com | はい | はい | 約5 | いいえ | はい |
| epochconverter.com | はい | はい | 約8 | いいえ | はい |
| site24x7.com | はい | はい | 約6 | 完全IANA | はい |
date -d @timestamp(Linux) |
はい | いいえ | 約3 | システムTZのみ | なし |
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 出力が1970年または1969年の日付を示す | 入力が間違った単位で読み取られている | 単位セレクタを入力に合わせて変更する(秒/ms/μs) |
| 日付と時刻が間違った瞬間を示す | タイムゾーンセレクタが正しく設定されていない | UTCに切り替えて基本の瞬間を確認し、正しいオフセットに調整する |
| ロケール行が間違った時刻を示す | ロケールの書式設定がブロックAのタイムゾーン選択を無視している | これは修正済みです — ロケールは選択されたタイムゾーンを尊重するようになりました。最新バージョンを使用していることを確認してください |
| 出力が更新されない | 入力に数字以外の文字が含まれている | フィールドをクリアし、数字とオプションの先頭マイナスのみを入力する |
| 既知の過去のタイムスタンプに対して「たった今」と表示される | 相対時間は現在のシステムクロックに対して計算される | これは想定内です — 相対時間は常にタイムスタンプを「現在」と比較します |
| 13桁の入力がはるか未来の日付を示す | 入力はミリ秒だが単位がデフォルトの秒になっている | 単位を「ミリ秒」に切り替える |
技術仕様
- 変換エンジン:JavaScript
Dateオブジェクト(ECMAScript標準) - タイムスタンプ範囲:JavaScriptの数値範囲全体(±9京秒、数十億年をカバー)
- 対応入力:10進整数、負の値(1970年以前)
- 入力精度:秒、ミリ秒、またはマイクロ秒(設定可能)
- タイムゾーン対応:UTC、ローカル(ブラウザシステム)、カスタムGMTオフセット(-12〜+14、0.5時間刻み)。各ブロックで独立
21の形式ファミリ
| # | グループ | 形式 | 例 |
|---|---|---|---|
| 1 | 共通 | @ Format | 3/19/2025 @ 2:14:38 PM +0000 |
| 2 | 共通 | DateTime | 2025-03-19 14:14:38 |
| 3 | 共通 | ISO 8601 | 2025-03-19T14:14:38+00:00 |
| 4 | 共通 | RFC 3339 | 2025-03-19T14:14:38Z(UTCはZを使用) |
| 5 | RFC | RFC 1123Z | Wed, 19 Mar 2025 14:14:38 +0000 |
| 6 | RFC | RFC 822 | 19 Mar 25 14:14 UTC |
| 7 | RFC | RFC 822Z | 19 Mar 25 14:14 +0000 |
| 8 | RFC | RFC 1123 | Wed, 19 Mar 2025 14:14:38 UTC |
| 9 | RFC | RFC 850 | Wednesday, 19-Mar-25 14:14:38 UTC |
| 10 | Go | ANSIC | Wed Mar 19 14:14:38 2025 |
| 11 | Go | UnixDate | Wed Mar 19 14:14:38 UTC 2025 |
| 12 | Go | RubyDate | Wed Mar 19 14:14:38 +0000 2025 |
| 13 | Go | DateOnly | 2025-03-19 |
| 14 | Go | TimeOnly | 14:14:38 |
| 15 | Go | Kitchen | 2:14PM |
| 16 | Go | Stamp | Mar 19 14:14:38 |
| 17 | ロケール | Locale | 3/19/2025, 2:14:38 PM(ブラウザ依存) |
| 18 | ロケール | Locale Date | 3/19/2025 |
| 19 | ロケール | Locale Time | 2:14:38 PM |
| 20 | その他 | Hex | 0x6618E1FE |
| 21 | その他 | 相対時間 | 124d |
形式ファミリツリー
このツールの日付と時刻の形式は、4つの系統に由来します:
- RFC 822(1982年)は2桁の年を持つ元のメール日付形式を定義しました。RFC 1123(1989年)は4桁の年でそれを置き換えました。RFC 1123Zは、アルファベットの略称(
UTC)の代わりに数値のタイムゾーンオフセット(+0000)を使用する同じ形式です。これらは一緒にHTTPヘッダ(1123Z)とメール形式(822)をカバーします。 - ISO 8601(1988年)は日付と時刻の表現に関する国際標準を確立しました。RFC 3339(2002年)はISO 8601をインターネット向けにプロファイルし、UTCの場合は必須の
Zなどの要件を追加しました。最近のほとんどのAPIはこれらのいずれかを選択します。 - Goの時間定数(
ANSIC、UnixDate、RubyDateなど)は、Goの標準ライブラリに組み込まれた便利なレイアウトです。これらはPOSIX規約(ctime出力)、RFC標準、およびGo固有の便利な形式(DateOnly、Kitchen、Stamp)を反映しています。 - ロケール形式はブラウザの
Intl.DateTimeFormatAPIを使用し、これはUnicode Common Locale Data Repository(CLDR)に従います。正確な出力はユーザーのブラウザ言語設定によって異なります。
互換性
- ブラウザ:Chrome 90+、Firefox 90+、Safari 15+、Edge 90+
- 依存関係:なし — プレーンなJavaScript、サードパーティライブラリはゼロ
- データ処理:100%クライアント側 — ネットワークリクエストはゼロ
機能
- Unixタイムスタンプと人間が読める日付の双方向変換
- リアルタイムの現在Unixタイムスタンプ表示と自動更新
- 複数の出力形式:UTC、ローカル時間、ISO 8601、16進数、相対時間
- 正確な日付からタイムスタンプへの変換のためのカスタムタイムゾーンオフセット対応
- クライアント側処理 — サーバーにデータは送信されません