UTC オフセットと夏時間の実用ガイド
「UTC+8」は、緯度のように土地へ固定された属性に見えます。しかしそうではありません。これはルールであり、多くの国ではそのルールが年に2回書き換わります。会議の設定、ログ、ソフトウェアで起きる時差のトラブルは、ほぼすべて「ルールを事実と取り違えたこと」に由来します。
この記事では、オフセットの意味、変則的なオフセットの読み方、いまも時刻を切り替えている地域、そして切り替え日に実際に何が壊れるのかを整理します。

地図: CIA、パブリックドメイン、Wikimedia Commons より
オフセットとは
オフセットは、現地の時計と協定世界時(UTC)との差を、UTC に符号と時間数を続けて表したものです。
- UTC+08:00 は、現地の時計が UTC より8時間進んでいることを意味します。UTC が 04:00 なら現地は 12:00 です。
- UTC−05:00 は、現地の時計が UTC より5時間遅れていることを意味します。UTC が 04:00 なら現地は前日の 23:00 です。
間違えやすいのは符号です。正のオフセットは本初子午線より東、負のオフセットは西です。東は進み、西は遅れます。
GMT と UTC は厳密には別物
GMT(グリニッジ標準時)はオフセット UTC+0 のタイムゾーンで、イギリスの冬に使われています。UTC はオフセットの基準となる原子時の標準です。日常的には互換に扱えますが、「GMT+8」という書き方は厳密には不正確で、正しくは「UTC+8」です。GMT 風のラベルを出力するシステムもありますが、UTC とみなして問題ありません。
整数時間ではないオフセット
世界のオフセットのおよそ4分の3は整数時間です。だからこそ、残りは忘れられます。
| オフセット | 地域 |
|---|---|
| UTC+05:30 | インド、スリランカ |
| UTC+05:45 | ネパール |
| UTC+08:45 | オーストラリア西部ユークラ |
| UTC+09:30 | オーストラリア中部(ノーザンテリトリー、南オーストラリア) |
| UTC+10:30 | ロード・ハウ島 |
| UTC+12:45 | ニュージーランド、チャタム諸島 |
| UTC+13:00 | トンガ、サモア、キリバス(ライン諸島) |
| UTC−03:30 | カナダ、ニューファンドランド |
| UTC−09:30 | マルキーズ諸島 |
ネパールの45分オフセットは世界で唯一です。「オフセットは必ず3600秒の整数倍」と仮定したコードを書くと、この数行がそれを壊します。
1国1オフセット
中国は地理的に約5時間分の幅がありますが、全国で UTC+8 の単一オフセットを使っています。新疆ウイグル自治区の西部では、日の出が現地時間の10時ごろになることもあります。スペインは地理的にはほぼ UTC+0 に位置しますが、中欧に合わせて UTC+1(夏は UTC+2)を採用しています。これらは天文学的な結果ではなく政治的な選択です。タイムゾーンは立法であって幾何学ではない、という良い例です。
夏時間
夏時間は春に時計を1時間進め、秋に1時間戻すことで、日照時間と労働時間の重なりを良くする仕組みです。
いまも切り替える地域
- EU とイギリス — 3月最終日曜から10月最終日曜まで。
- アメリカ、カナダ — 3月第2日曜から11月第1日曜まで。
- オーストラリア、ニュージーランド — 南半球なので期間が逆で、9月下旬または10月上旬に始まり翌年4月上旬に終わります。
- チリ、パラグアイ、ブラジルの一部 — 南半球の日程に各地域の変種。
切り替えない地域
- 中国 — 1986年から1991年まで試行し、廃止されました。
- 日本 — 1948年から1951年まで実施され、その後は復活していません。
- インド、東南アジアの大部分、ロシア、トルコ — 夏時間なし。
- アフリカと中東の大部分 — 例外を除いて夏時間なし。
- ハワイ、アリゾナ(ナバホ・ネーションを除く)、プエルトリコ — 米国内で適用を外している地域。
東京とニューヨークを調整する場合、年の大部分は14時間差、その途中で一時的に13時間差になり、また14時間差に戻ります。この数字は安定しません。安定しているのは各タイムゾーンのルールだけです。
切り替え日に起きる不具合
毎年繰り返されるバグは2種類あり、原因は同じです。どちらも「すべての現地時刻はちょうど1回だけ存在する」という仮定から来ています。
春の繰り上げ:存在しない現地時刻。 アメリカでは時計が 02:00 から 03:00 へ飛ぶため、その日に 02:30 は存在しません。02:30 に設定した定期実行は、動かないか、03:00 に動くか、2回動くか——実装次第です。EU の 01:00 から 02:00 への繰り上げでも同じで、01:30 は存在しません。
秋の繰り下げ:2回訪れる現地時刻。 時計が 02:00 から 01:00 へ戻るため、01:30 は1時間を挟んで2回発生します。素朴なスケジューラは2回実行します。「01:30」とだけ記録されたログは、オフセットがなければどちらか判別できません。
どちらも正解は同じです。保存と比較は UTC で行い、現地時刻への変換は表示のときだけ行う。 UTC には夏時間がなく、秒が重複することも飛ぶこともありません。オフセットなしの現地時刻をデータベースに保存するのは、3月に爆発する時限装置です。
実践チェックリスト
- オフセットなしの現地時刻を保存しない。
2026-03-08 02:30は時刻点ではなく、2026-03-08T02:30-05:00が時刻点です。 - 設定にはオフセットではなく IANA のゾーン名を書く。
America/New_Yorkは夏時間のルールを内包していますが、UTC-5は内包していません。 - 定例会議を設定する前に両側の切り替え日を確認する。 片方だけ切り替わる場合があります。
- 「存在しない時刻」を想定する。 現地の 00:00 から 03:00 の間に走る定期処理があるなら、切り替え日の挙動を必ず確認してください。
- オフセットが整数時間だと決めつけない。 30分・45分のオフセットは実在し、素朴な計算を壊します。
変換を確認する方法
単発の変換では、暗算するより2つのゾーンを並べて見るほうが速く確実です。タイムゾーン変換は各ゾーンの現在のオフセットを表示し、夏時間も自動で処理します。複数のゾーンを同時に見たいならワールドクロックが向いています。
時刻点ではなく長さ——「この2つのタイムスタンプの間は何時間か」——を求めるなら、時間計算機を使ってください。絶対的な経過時間で計算するため、夏時間の影響を受けません。