ToolActToolAct

タイムスタンプ変換ツール

Unixタイムスタンプと日時フォーマットの相互変換

0
タイムスタンプをクリックでコピー(日本時間 UTC+9)

タイムスタンプ → 日付

標準フォーマット-
ISO 8601-
日本語フォーマット-
カスタムフォーマット-

日付 → タイムスタンプ

秒単位タイムスタンプ-
ミリ秒単位タイムスタンプ-
Unix時刻-

グローバルタイムゾーン比較

北京 (UTC+8)--
东京 (UTC+9)--
新加坡 (UTC+8)--
伦敦 (UTC+0/+1)--
巴黎 (UTC+1/+2)--
纽约 (UTC-5/-4)--
洛杉矶 (UTC-8/-7)--
悉尼 (UTC+10/+11)--

よく使うフォーマット例

YYYY-MM-DD HH:mm:ss
YYYY/MM/DD HH:mm:ss
YYYY-MM-DD
HH:mm:ss
YYYYMMDDHHmmss

タイムスタンプとは?

タイムスタンプ(Timestamp)は特定時刻を表す数値です。Unixタイムスタンプは1970年1月1日00:00:00 UTC(Unixエポック)から指定時刻までの秒数であり、コンピュータシステムで時刻を表現する標準方式で、クロスプラットフォーム・クロスタイムゾーンで一意な特徴があります。タイムスタンプは秒単位(10桁)とミリ秒単位(13桁)があり、秒単位はUnix/Linuxシステムで、ミリ秒単位はJavaScriptなどのプログラミング言語でよく使用されます。

使い方

タイムスタンプから日付へ

  1. 左側のカードにUnixタイムスタンプを入力してください
  2. 変換先のタイムゾーンを選択してください(例:北京時間 UTC+8)
  3. 変換ボタンをクリックして変換された日時を確認してください
  4. 結果には、標準形式、ISO 8601、中国形式などが含まれます

日付からタイムスタンプへ

  1. 右側のカードで日付と時刻を選択してください
  2. その日付と時刻が使用する元のタイムゾーンを選択してください
  3. 変換ボタンをクリックしてUnixタイムスタンプを取得してください
  4. 結果には、秒とミリ秒のタイムスタンプが含まれます

タイムゾーンのヒント

  • ソース値が秒単位かミリ秒単位かを確認してください。10桁と13桁のタイムスタンプを混同すると、日付が誤る一般的な原因となります。
  • 人が読める形式の日付を変換する際は、必ず意図したタイムゾーンを確認してください。特にログ、スケジュールジョブ、リージョンをまたぐシステムでは重要です。

利用シーン

Unixタイムスタンプを読みやすい日付に変換秒単位またはミリ秒単位のタイムスタンプを貼り付けると、ツールが短い秒単位値を自動検出し、必要に応じてミリ秒に変換して、選択したタイムゾーンで標準形式、ISO形式、日本語形式、カスタム形式の日付を表示します。10桁の値は秒単位、13桁の値はミリ秒単位として処理され、最もよくある混同ミスを事前に検出できます。
日時入力からタイムスタンプを生成ローカルの日時を選択して秒単位・ミリ秒単位のタイムスタンプとUnix dateコマンドのサンプルに変換できます。クイックアクションで今日、明日、週の始まり、月の始まり、年の始まりにタイムスタンプを設定可能です。変換はブラウザのローカルシステムクロックのみを使用するため、サーバー時刻サービスやNTP、リモートAPIは一切関与せず、時計が正しく設定されたマシンであればどこでも同じ結果が得られます。
主要タイムゾーンの現在時刻を比較ページは現在のタイムスタンプを毎秒更新し、北京、東京、ロンドン、パリ、ニューヨーク、ロサンゼルス、シドニーなどの都市の現在時刻をリアルタイムで表示します。コピー可能な一般的なフォーマット例も提供されます。ISO 8601とRFC 3339の2つの表示形式はほぼ同一ですが、ISO 8601は多くの任意の区切り文字を許容するのに対し、RFC 3339はより厳格なプロファイルで形式を固定し明示的なオフセットを要求するため、ログやAPIペイロードにはRFC 3339が安全な選択肢です。
ログ行を異なる形式間で変換'2024-05-12T08:30:00Z'や'1700000000'などのログエントリを入力に貼り付け、標準形式、ISO形式、RFC形式、日本語形式、カスタム形式を切り替えて、ログパイプラインやgrepクエリに合った形式をコピーできます。
キャッシュTTLやJWTの有効期限を検証現在のエポック秒を'Cache-Control: max-age'の値から引いたり、JWTのexpクレームを貼り付けてトークンが有効か、もうすぐ期限切れか、すでに期限切れかを確認したりできます。セッションを無効にする前に必ず発行元サービスで確認してください。Unix秒を32ビット符号付き整数で保存するレガシーシステムは2038-01-19 03:14:07 UTCでオーバーフローするため、2010年以前のファームウェアでは2038年以降のタイムスタンプを渡す前にその制限を確認する必要があります。

仕組み

UnixタイムスタンプはUnixエポック(1970-01-01T00:00:00Z)からの経過時間を数えます。これはPOSIX時刻がすべての時刻をラベル付けするための原点です。POSIX時刻はうるう秒を意図的に無視します。各暦日は厳密に86,400秒として扱われるため、うるう秒の挿入をまたぐ2つのタイムスタンプは厳密な原子時計のカウントと1秒ずれますが、その代わりにエポック秒とUTC暦日フィールドの間の変換が86,400による単純なdivmodで済みます。 日常的に登場する2つのフォーマットは秒(現在10桁、例:1717000000)とミリ秒(13桁、例:1717000000000)です。JavaScriptのDate.now()はエポックからのミリ秒を返し、`new Date(ms)`はミリ秒を受け付けます。一方、Unixの`date +%s`、Goのtime.Unix、ほとんどのデータベースのTIMESTAMPカラムは秒を使用します。桁数による判別が一般的な方法です。10桁の値を秒として読めば2001〜2286年の範囲に入り、同じ値をミリ秒として読めば1970年内になります。 タイムスタンプの表示にはタイムゾーンが必要です。UTCは接尾辞`Z`で表記し、他のオフセットは`±HH:MM`を使用します(例:中国標準時`+08:00`、米国東部標準時`-05:00`)。ISO 8601は複数の任意セパレータを許容しますが、RFC 3339はより厳格なプロファイルでセパレータを固定しているため、API仕様では明示的なオフセット付きのRFC 3339が通常要求されます。エポック秒を32ビット符号付き整数で保存するレガシーシステムは、最大正値2147483647でオーバーフローし、これは2038-01-19T03:14:07Zに相当します(Y2038問題)。64ビットストレージではこの境界は人間にとって意味のある範囲をはるかに超えます。

  • Unixエポックは1970-01-01T00:00:00Zに固定されており、POSIX時刻はうるう秒を無視するため、すべての日は厳密に86,400秒として扱われる。
  • JavaScript Date.now()はミリ秒を返す。`Math.floor(Date.now() / 1000)`で秒単位のタイムスタンプに変換。
  • Y2038の境界:符号付き32ビットタイムスタンプは2147483647 = 2038-01-19T03:14:07Zでオーバーフロー。64ビットストレージではこの問題を回避。
  • ISO 8601とRFC 3339:RFC 3339はより厳格なISO 8601プロファイルで、明示的なオフセット(`Z`または`±HH:MM`)を要求。APIやログではRFC 3339が推奨。
  • ECMAScript Dateはエポックから±100,000,000日(≈ ±273,785年)に制限。`new Date(8.64e15)`と`new Date(-8.64e15)`が絶対的な境界。
  • JWTの`exp`、`iat`、`nbf`クレーム、`Cache-Control: max-age`、Cookieの`Expires`はすべてUnix秒を使用(RFC 7519、RFC 7234)。`Math.floor(Date.now()/1000)`に対して直接加算・減算可能。
  • タイムゾーンは表示される日時に影響するが、タイムスタンプ値自体には影響しない。同じエポック秒がUTC+8とUTC-5で異なる壁時計時刻として表示される。

使用例

10桁 Unix タイムスタンプを可読な日付に変換

入力:  1781526600
UTC:    2026-06-15 12:30:00
北京 (UTC+8): 2026-06-15 20:30:00
ISO 8601:        2026-06-15T12:30:00Z

POSIX: IEEE 1003.1 では Unix 時刻を 1970-01-01 00:00:00 UTC(Epoch)からの経過秒として定義
ISO: ISO 8601 は曖昧さのない日時表現として YYYY-MM-DDThh:mm:ssZ 形式を定義

日付からタイムスタンプへの逆変換

入力:  2026-01-01 00:00:00 (UTC)
秒(10桁):     1767225600
ミリ秒(13桁): 1767225600000
Unix コマンド:            date -d @1767225600

注意: JavaScript の Date.getTime() はミリ秒を返し、Python の time.time() は秒(float)を返す
POSIX: time_t 型は伝統的に 32 ビットまたは 64 ビット符号付き整数

秒とミリ秒の見分け方

1781526600     -> 10桁、秒   -> 2026-06-15 12:30:00 UTC
1781526600000  -> 13桁、ミリ秒 -> 2026-06-15 12:30:00.000 UTC

よくある不具合: 13桁の値を秒として読むと約 74,000 年になる
見分け方: 10〜11桁 = 秒(1970〜2286)、13桁 = ミリ秒(JavaScript の既定)

JWT の exp クレームをデコード

JWT ペイロード: { "exp": 1798617600 }
デコード結果:     2027-01-01 00:00:00 UTC
現在時刻: 1781526600
有効期間:   17,091,000 秒(残り約198日)

RFC: RFC 7519 セクション 2 では NumericDate を Epoch からの秒数として定義

2038年問題の境界チェック

符号付き32ビットの最大タイムスタンプ: 2147483647
デコード結果:                      2038-01-19 03:14:07 UTC
1秒後:             2147483648 -> レガシー32ビットシステムでオーバーフロー

対処: 64ビット time_t を使用(最近の Linux/macOS の既定)または ISO 8601 文字列で保存
POSIX: 32ビット time_t システムは 2038-01-19 以降にラップアラウンドする

よくある質問

Unixタイムスタンプとは何ですか?

1970-01-01 00:00:00 UTC(「Unixエポック」)から経過した秒数です。JavaScriptや多くのAPIは、同じエポックからのミリ秒数(Unixタイムスタンプ × 1000)を使用します。本ページは両方を受け付け、対応する日時をローカル時刻とUTCで表示します。

秒、ミリ秒、マイクロ秒、ナノ秒の違いは?

システムによって精度が異なります。Unixの`time()`は秒、JavaScriptのDate.now()はミリ秒、JavaのInstantはナノ秒に対応しています。本ページは桁数で自動判別します。10桁=秒(2001〜2286年範囲)、13桁=ミリ秒、16桁=マイクロ秒、19桁=ナノ秒です。

なぜ2038年1月19日が重要なのですか?

「2038年問題」のためです。32ビット符号付きUnixタイムスタンプは2038-01-19の03:14:07 UTCにオーバーフローします。32ビットtime_tを使用しているシステムは1901年に巻き戻ります。最新の64ビットシステムは数十億年は問題ありませんが、レガシーな組み込みシステムは対応が必要です。

タイムゾーンはどう扱われますか?

Unixタイムスタンプは本質的にUTCです。本ページではローカル時刻、UTCを表示し、追加表示用に任意のIANAタイムゾーン(Asia/Shanghai、America/New_York、Europe/London)を選択できます。サマータイムはゾーンごとに自動適用されます。

なぜ「YYYY-MM-DD」を解析するとUTCとみなされる場合があるのですか?

タイムゾーンのないISO 8601日付は曖昧です。JavaScriptのDateコンストラクタは、日付のみの文字列をUTC、日時文字列をローカルとして扱います。これは1日ずれるバグの有名な原因です。本ページではどのタイムゾーンが適用されるかを明示します。

変換はローカルで行われますか?

はい。計算はJavaScriptのDateとIntl.DateTimeFormatで行われます。タイムスタンプはアップロードされません。

未来のタイムスタンプを生成できますか?

はい。未来の日時を選択すると、対応するタイムスタンプが返されます。JWTのexpクレーム設定、cronジョブのテスト日時、コード内のキャッシュ有効期限などに便利です。