2026-09-26T15:30:45Zは日本時間で9月27日午前0時30分45秒です
ISO 8601の時刻の末尾にあるZはUTC(協定世界時)を表し、日本標準時(JST)はUTCより9時間進んでいます。そのため、Z付きの時刻に9時間を足すと日本時間になり、UTCの15:00から24:00までの時刻は、日本ではすでに翌日です。反対に、末尾が+09:00の値は最初から日本時間なので、9時間を足してはいけません。
上の変換ツールの入力欄に日付・時刻の文字列を貼り付けると、形式を自動で判別し、日付・時刻・小数秒・時間帯のどこがどの部分かを色分けして示します。答えの下にある帯は、UTCの1日と日本の1日を同じ時間軸に重ねて描き、日付が変わる位置と、日本の1日がUTCのいつからいつまでにあたるかを示します。ログを複数行貼り付ければ、日時の書かれた箇所だけをまとめて日本時間に変えることもできます。
UTCの時刻を日本時間に直す必要が出る場面
サーバーやプログラムは、地域によって値が変わらないUTCや、オフセット付きのISO 8601で時刻をやり取りすることが多くあります。人がその値を読んで、日本で何時だったかを判断するときに、この変換が必要になります。
- APIやJSONのレスポンスを確認するとき:
"createdAt": "2026-09-26T15:30:45.123Z"のようにZで終わる値はUTCです。問い合わせにある「昨夜0時30分の注文」と同じものかどうかを照合するには、日本時間に直す必要があります。 - サーバーログを読むとき: サーバーの時計をUTCに合わせていると、ログも
[26/Sep/2026:15:30:45 +0000]のようにUTCで記録されます。障害の発生時刻を日本時間にしておくと、ほかの記録との前後関係を合わせられます。 - メールやHTTPのヘッダーを見るとき:
Date: Sat, 26 Sep 2026 15:30:45 GMTのように曜日と英語の月名で書かれた値も、同じ瞬間を指します。 - データベースから日本の1日分を探すとき: UTCで保存された列から「9月27日の注文」を探すには、UTCの9月26日15時以上、9月27日15時未満で絞り込む必要があります。上の帯の下の行が、この範囲をSQL条件としてコピーできます。
- 設定値をUTCで渡すとき: 予約配信や有効期限をISO 8601のUTCで受け取るサービスに日本時間の予定を入れる場合や、AWSの署名のように
20260926T153045Zという基本形式を作る場合です。
計算方法: 書かれたオフセットを引いてUTCに戻し、9時間を足します
日本時間 = 書かれた時刻 − 書かれたオフセット + 9時間
- 末尾の時間帯表記を探します: Z(または+00:00)はUTC、+05:30はUTCより5時間30分進んだ地域、-04:00は4時間遅れた地域の時刻です。何も付いていなければ、文字だけではどの地域の時刻か分かりません。
- オフセットを引いてUTCに戻します: 2026-09-26T08:00:00+05:30は、8時から5時間30分を引いてUTCの2時30分です。オフセットがマイナスなら、逆に足します。
- UTCに9時間を足します: UTCの2時30分は、日本の11時30分です。1950年の夏時間のように、日本のオフセットが+9ではなかった時期は、そのときの値を使います(日本標準時の移り変わり)。
- 24時を超えたら日付を1日進めます: UTC 15時30分 + 9時間 = 24時30分なので、翌日の0時30分です。逆に日本時間から9時間を引いて0時を下回れば、前日になります。
小数秒は、時間帯を変えても変わりません。オフセットは時・分の単位なので、秒より下の桁は動かないためです。この変換ツールも、.123や.123456789のように入力された桁をそのまま書き写します。
ISO 8601の文字列を部分ごとに読む
| 部分 | 例 | 意味 |
|---|---|---|
| 日付 | 2026-09-26 | 年-月-日です。月と日は常に2桁で書きます。 |
| 区切り | T | 日付と時刻の間の区切り文字です。RFC 3339は、読みやすさのために空白を使うことも認めています。 |
| 時刻 | 15:30:45 | 24時間制の時:分:秒です。 |
| 小数秒 | .123 | 秒より下の桁です。3桁ならミリ秒、6桁ならマイクロ秒、9桁ならナノ秒まで書いた値です。 |
| 時間帯 | Z | UTCを表します。+00:00と同じ瞬間です。 |
| 時間帯 | +09:00 | UTCより9時間進んだ地域の時刻、つまり日本時間です。 |
| 時間帯 | -00:00 | UTCの時刻は正しいものの、現地の時差は分からないという表示です。 |
If the time in UTC is known, but the offset to local time is unknown, this can be represented with an offset of "-00:00".RFC 3339 4.3 Unknown Local Offset Convention。同じ文書の5.6は、TとZを小文字のt・zで書いてもよいと補足しています。
この変換ツールが読める形式
入力欄には、次の形式をそのまま貼り付けられます。前後の空白や全角の数字は自動で整えます。
| 形式 | 例 | よく見る場所 |
|---|---|---|
| ISO 8601 拡張形式 (RFC 3339) | 2026-09-26T15:30:45.123Z | API・JSONのレスポンス、JavaScriptのtoISOString() |
| 空白区切り・短いオフセット | 2026-09-26 15:30:45.123+00 | PostgreSQLの既定(ISO)出力 |
| 時間帯のない値 | 2026-09-27 00:30:45 | DBのDATETIME列、Excelから書き出した表 |
| ISO 8601 基本形式 | 20260926T153045Z | AWSのリクエスト署名の時刻、ファイル名 |
| HTTP日付 | Sat, 26 Sep 2026 15:30:45 GMT | HTTPのDate・Last-Modifiedヘッダー |
| RFC 2822 メール日付 | Sat, 26 Sep 2026 15:30:45 +0000 | メール原文のDateヘッダー |
| JavaScript Date文字列 | Sat Sep 26 2026 15:30:45 GMT+0900 (日本標準時) | ブラウザーのコンソールでのString(new Date())の出力 |
| dateコマンド | Sat Sep 26 15:30:45 JST 2026 | macOSやCロケールでのdateの出力 |
| Webサーバーログ | 26/Sep/2026:15:30:45 +0000 | nginx・Apacheのアクセスログ(Common Log Format) |
| 年月日の数字表記 | 2026/09/26(土) 15:30:45 JST | 2026/09/26形式のログ |
| 日本語の日付 | 2026年9月27日 午前0時30分 | 文書やチャットに書かれた時刻 |
| 数字のみ | 1790436645 | UNIX時間(桁数で秒かミリ秒かを判別) |
数字だけを扱うことが多いなら、UNIXタイムスタンプ変換ツールのほうが、単位の判別や32ビットの範囲まで詳しく示します。
変換の例
| 入力 | 日本時間 | UTC | 日付 |
|---|---|---|---|
2026-09-26T15:30:45.123Z | 2026-09-27 00:30:45.123 | 2026-09-26T15:30:45.123Z | 翌日 |
2026-09-26T03:00:00Z | 2026-09-26 12:00:00 | 2026-09-26T03:00:00Z | 同じ日 |
2026-09-26T08:00:00+05:30 | 2026-09-26 11:30:00 | 2026-09-26T02:30:00Z | 同じ日 |
2026-09-26T20:00:00-04:00 | 2026-09-27 09:00:00 | 2026-09-27T00:00:00Z | 翌日 |
2026-09-27T00:30:45+09:00 | 2026-09-27 00:30:45 | 2026-09-26T15:30:45Z | すでに日本時間 |
2026-01-01 00:15 (日本時間として読む) | 2026-01-01 00:15:00 | 2025-12-31T15:15:00Z | UTCは前日 |
Sat, 26 Sep 2026 15:30:45 GMT | 2026-09-27 00:30:45 | 2026-09-26T15:30:45Z | 翌日 |
2026-12-31T15:00:00Z | 2027-01-01 00:00:00 | 2026-12-31T15:00:00Z | 日本は元日 |
1950-07-01T00:00:00Z | 1950-07-01 10:00:00 | 1950-07-01T00:00:00Z | 夏時間(+10:00) |
UTCの15時から、日本は翌日です
日本時間はUTCより9時間進んでいるため、UTCの1日の終わりの9時間(15:00〜23:59)は、日本の日付では翌日になります。言い換えると、日本の1日は、UTCでは前日の15時から当日の15時前までです。
| UTC | 00:00 | 03:00 | 06:00 | 09:00 | 12:00 | 15:00 | 18:00 | 21:00 |
|---|---|---|---|---|---|---|---|---|
| 日本 | 09:00 | 12:00 | 15:00 | 18:00 | 21:00 | 翌日 00:00 | 翌日 03:00 | 翌日 06:00 |
このため、データをUTCの日付でまとめて集計すると、日本の午前9時より前の記録が前日に入ってしまいます。日本の日付で集計するには、次のようにUTCの範囲を、終わりが開いた区間で指定します。
-- 日本時間 2026-09-27 の1日分
WHERE created_at >= '2026-09-26T15:00:00Z'
AND created_at < '2026-09-27T15:00:00Z'
終わりを23:59:59で閉じると、その後の小数秒(23:59:59.5など)が漏れるため、「翌日の0時未満」と書くほうが安全です。
コードで日本時間に変換する
プログラムの中では、9時間を自分で足すより、時間帯の名前(Asia/Tokyo)を渡すほうが、過去の夏時間まで正しく処理されます。
| 言語 | コード | 注意点 |
|---|---|---|
| JavaScript | new Date('2026-09-26T15:30:45Z').toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }) | オフセットのない'2026-09-26T15:30'は端末の時刻として、'2026-09-26'のように日付だけの場合はUTCとして読まれます。 |
| Python 3.11以上 | datetime.fromisoformat('2026-09-26T15:30:45Z').astimezone(ZoneInfo('Asia/Tokyo')) | 3.10以下のfromisoformat()は、末尾のZを読めません。 |
| SQLでの絞り込み | created_at >= '2026-09-26T15:00:00Z' AND created_at < '2026-09-27T15:00:00Z' | 列が時間帯のない型なら、保存時にどの時間帯で書いたかを先に確かめます。 |
When the UTC offset representation is absent, date-only forms are interpreted as a UTC time and date-time forms are interpreted as a local time.ECMA-262 21.4.1.32 Date Time String Format。同じ文字列でも、時刻が付いているかどうかでJavaScriptが読む時間帯が変わります。
日本標準時が常に+09:00だったわけではありません
現在の日本標準時はUTC+09:00ですが、IANA時間帯データベース(Asia/Tokyo)には、標準時の始まりと、夏時間を実施した期間が記録されています。この変換ツールは、その記録に従い、そのときのオフセットで計算します。
| 期間(日本時間) | オフセット | 内容 |
|---|---|---|
| 1888-01-01より前 | +09:18:59 | 東京の地方平均時 |
| 1888-01-01 〜 現在 | +09:00 | 日本標準時。1948〜1951年の夏時間を除きます |
| 1948-05-02 01:00 〜 1948-09-12 01:00 | +10:00 | 夏時間(0時を1時に進め、9月に1時を0時に戻す) |
| 1949-04-03 01:00 〜 1949-09-11 01:00 | +10:00 | 夏時間 |
| 1950-05-07 01:00 〜 1950-09-10 01:00 | +10:00 | 夏時間 |
| 1951-05-06 01:00 〜 1951-09-09 01:00 | +10:00 | 夏時間(IANAに記録された最後の夏時間) |
IANAのデータでは、夏時間は1951年が最後で、それ以降のオフセットの変化はありません。そのため、1948-05-02 00:30は東京に存在しない時刻、1948-09-12 00:30は2回ある時刻です。時間帯のない値をこのような時刻で入力すると、変換ツールはどちらの側で読んだかを別に表示します。1888年より前のようにオフセットに秒が付く時期は、RFC 3339・RFC 2822の表記が時差を分までしか書けないため、その2行を空欄にします。
よくある間違い
- +09:00の値にさらに9時間を足す: 2026-09-27T00:30:45+09:00は、すでに日本時間です。9時間を足すと、まったく別の午前9時30分になります。
- 時間帯のない値をUTCとみなす: 2026-09-27 00:30:45には時間帯の情報がありません。保存したプログラムが日本時間で書いたのかUTCで書いたのかを確かめてから、上の「時間帯がない値は」の設定を選んでください。
- 日付だけを比べる: UTCの9月26日と日本の9月26日は、9時間ずれた別の1日です。日付ごとの集計は、どの時間帯を基準にするかを先に決める必要があります。
- Zと-00:00を区別しない: どちらもUTCの時刻ですが、-00:00には現地の時差が分からないという意味が加わります。メールヘッダーの-0000も同じ意味です(RFC 5322 3.3)。
- CSTやISTのような略語を信じる: CSTは米国中部標準時(-06:00)と中国標準時(+08:00)のどちらも指し、ISTはインド・アイルランド・イスラエルが使います。この変換ツールは、RFC 5322が値を定めた米国の略語だけをその値で読み、複数の国が使う略語は数字のオフセットで書き直すよう案内します。
制限
- 時間帯の計算は、使っているブラウザに入っているIANA時間帯データに従います。データの版によって、ごく古い時期や最近変わった地域のオフセットが異なる場合があります。
- 2026-W39-6のような週番号の日付、2026-269のような通算日の日付、09/26/2026のように月と日の順序が国ごとに異なる表記は読みません。
- 23:59:60のようなうるう秒はUNIX時間に存在しないため、次の秒の0秒として計算します。
- asctime形式(Sat Sep 26 15:30:45 2026)は、HTTPの規格ではUTCとみなされますが、プログラムによっては現地時刻で出力することもあるため、「時間帯がない値は」の設定に従います。
- 小数秒はナノ秒(9桁)まで受け付けます。時間帯の略語は、UTC・GMT・KST・JST・WIB・WITA・WIT・CET・CESTと、RFC 5322の米国の略語だけを読みます。
出典
- 01IETF RFC 3339: Date and Time on the Internet: Timestamps4.3 -00:00(現地の時差が不明)、5.6 date-timeの文法・小文字のt・zと空白区切りの許容、5.7 うるう秒60
- 02IETF RFC 5322: Internet Message Format3.3 date-time(曜日は日付と一致すること、-0000の意味)、4.3 旧時間帯略語UT・GMT・EST〜PDTの値
- 03IETF RFC 9110: HTTP Semantics, 5.6.7 Date/Time FormatsHTTP日付IMF-fixdateの例 "Sun, 06 Nov 1994 08:49:37 GMT"、asctime形式はUTCとみなす
- 04ECMA-262: 21.4.1.32 Date Time String Formatオフセットのない日付のみはUTC、日付と時刻は現地時刻として読む。21.4.4.41 Date.prototype.toStringの形式
- 05Pythonドキュメント: datetime.fromisoformat3.11からほとんどのISO 8601形式を読める。例 '2011-11-04T00:05:23Z' はUTC
- 06AWS: Signature Version 4 の日付の扱い"The time stamp must be in UTC and use the following ISO 8601 format: YYYYMMDDTHHMMSSZ"
- 07nginx: ngx_http_log_module$time_local "local time in the Common Log Format"
- 08PostgreSQLドキュメント: 8.5.2 Date/Time OutputISOスタイルの出力例 "1997-12-17 07:37:16-08"
- 09IANA Time Zone DatabaseasiaファイルのAsia/Tokyoの記録(1888年の標準時、1948〜1951年の夏時間)
出典の確認日は2026-10-20です。時間帯データは年に何度も改訂され、画面の時刻は使っているブラウザに入っている版に従います。
よくある質問
ISO日付の末尾のZは何を意味しますか?
Zは、その時刻がUTC(協定世界時)であることを示す印です。2026-09-26T15:30:45Zと2026-09-26T15:30:45+00:00は同じ瞬間です。RFC 3339では、Zを小文字のzで書くことも認めています。
UTCを日本時間にするには何時間足しますか?
9時間を足します。UTCの15時から24時前までは、9時間を足すと24時を超えるため、日本では翌日になります。ただし、1948〜1951年の夏時間のように日本のオフセットが+10:00だった期間は10時間を足す必要があり、変換ツールはIANA時間帯データでこうした期間を反映します。
2026-09-26T15:30:45Zは日本では何時ですか?
日本時間の2026年9月27日(日)午前0時30分45秒です。UTCでは9月26日(土)ですが、9時間を足すと0時を超えるため、日本の日付は1日後になります。RFC 3339では2026-09-27T00:30:45+09:00です。
末尾が+09:00のとき、さらに9時間を足しますか?
足しません。+09:00は「UTCより9時間進んだ地域の時刻」という意味なので、その値自体がすでに日本時間です。2026-09-27T00:30:45+09:00を入力すると、変換ツールはUTC表記の2026-09-26T15:30:45Zを示し、「すでに日本時間」の印を付けます。
日本時間の2026年1月1日0時15分は、UTCのISO表記では何ですか?
2025-12-31T15:15:00Zです。日本時間から9時間を引くと、UTCではまだ2025年12月31日15時15分です。日本時間をオフセット付きでそのまま書くと2026-01-01T00:15:00+09:00になります。
時間帯のない2026-09-27 00:30:45も変換できますか?
変換できます。文字だけではどの時間帯か分からないため、「時間帯がない値は」の設定で、日本時間として読むかUTCとして読むかを選びます。既定は日本時間で、このときの答えはUTC表記の2026-09-26T15:30:45Zです。
UTCで保存されたデータから、日本の1日分を探すにはどうしますか?
日本の1日は、UTCでは前日の15時から当日の15時前までです。日本の9月27日なら、2026-09-26T15:00:00Z以上、2026-09-27T15:00:00Z未満で絞り込みます。変換ツールの帯の下にある「SQL条件をコピー」で、この範囲をそのままコピーできます。
ログの複数行の時刻をまとめて変換できますか?
「複数行をまとめて変換」を開いてログを貼り付けると、ISO 8601・HTTP日付・Webサーバーログ形式など、日時が書かれた箇所だけを探して日本時間に変えます。その場で置き換えることも、元の値の後ろに日本時間を追記することもでき、日付が正しくない値はそのまま残します。
今のUTCと日本時間を確認できますか?
入力欄の隣の「今」を押すと、現在の時刻がUTC形式で入り、1秒ごとに更新されます。答えには日本時間、下の帯には現在の瞬間が表示されます。もう一度押すか、入力欄に文字を入力すると、追従は止まります。
過去の日本の夏時間の日付も計算できますか?
計算できます。ブラウザのIANA時間帯データに従い、1948〜1951年の夏時間と、1888年に始まった日本標準時の+09:00を反映します。たとえば1950-07-01T00:00:00Zは夏時間にあたり、日本時間では午前10時です。