---
title: "日付・時刻がずれるときの対処（タイムゾーン）"
description: "予約日時が9時間ズレる、日付が1日前後する。原因の多くは UTC とローカル時刻の混在です。タイムゾーンのずれが起きる仕組みと典型パターンを押さえ、バグを再発させない直し方を整理します。"
image: "https://giga-site.com/og-image.png"
canonical: "https://giga-site.com/articles/timezone-date-wrong"
markdown: "https://giga-site.com/articles/timezone-date-wrong/index.md"
category: "トラブルシュート"
publishedAt: "2026-06-24"
updatedAt: "2026-06-25"
readingMinutes: 4
---
# 日付・時刻がずれるときの対処（タイムゾーン）

予約日時やイベント時刻が9時間ずれる、日付が1日前後する。こうしたバグの大半は、UTCとローカル時刻のどちらで扱っているかが揃っていないことが原因です。この記事では、タイムゾーンの基本を押さえ、ずれが起きる典型パターンと直し方を整理します。

> Source HTML: https://giga-site.com/articles/timezone-date-wrong
> Article index: https://giga-site.com/articles/index.md

## UTCとローカル時刻の関係を押さえる

UTCは世界共通の基準となる時刻で、日本のローカル時刻(JST)はUTCより9時間進んでいます。プログラムの内部では時刻をUTCで持ち、表示するときだけ閲覧者のローカル時刻に変換するのが基本です。

ずれの典型は、UTCのつもりの値をローカル時刻として解釈してしまう、あるいはその逆です。9時間という分かりやすい差が出たら、まずUTCとJSTの取り違えを疑ってください。

日付が1日ずれる現象も根は同じです。たとえば日本時間の午前0時台はUTCではまだ前日のため、日付だけを切り出すと1日前にずれることがあります。

- 内部では UTC で持つ、表示時にローカルへ変換する
- 9時間ちょうどのずれ → UTC と JST の取り違え
- 日付が1日ずれる → 日付部分だけを切り出した変換ミス

## 文字列のパースで起きるずれ

日時の文字列をプログラムに渡すとき、フォーマットによって解釈が変わります。年月日だけの形式は環境によってUTC基準で解釈されることがあり、時刻部分まで含む形式はローカル基準で解釈されることがあります。同じ値のつもりが、入力の書き方で結果がずれてしまいます。

ずれを避けるには、タイムゾーンを明示したISO 8601形式(末尾にZやプラスマイナスのオフセットが付く形)で受け渡すのが安全です。曖昧な文字列を避けるだけで、多くのずれは消えます。

## 症状別チェック表

日付・時刻がずれるは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。

確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。

- 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
- 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
- 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
- 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する

## 保存と表示で基準を揃える

データを保存するときはUTCで統一し、画面に出すときに閲覧者のタイムゾーンへ変換する、という一貫した方針を決めると混乱しません。保存はローカル、表示もローカルだが変換を忘れる、といった場当たり的な扱いがずれを生みます。

サーバーやビルド環境のタイムゾーン設定にも注意が必要です。実行環境がJSTかUTCかで、ログや生成される日時が変わることがあります。環境に依存せず、コード側で明示的に変換するのが安全です。

## ずれの切り分け手順

日時がおかしいときは、次の順で確認すると原因を絞り込めます。

1. ずれ幅を測る(9時間ちょうどならUTC/JST取り違え、1日なら日付切り出しを疑う)
2. 元データがUTCで保存されているか確認する
3. 受け渡す文字列をタイムゾーン明示のISO 8601形式に揃える
4. 表示処理で意図したタイムゾーンへ変換しているか確認する
5. 実行環境のタイムゾーン設定に依存していないか見直す

## 閲覧者の環境で確認するには

時刻のずれは、開発者の手元では出ないのに、別の環境やタイムゾーンの閲覧者で初めて顕在化することがあります。実際に配信されたページを、関係者それぞれの端末で開いてもらって確認すると、思わぬずれに気づけます。

ギガサイト便にHTMLをドロップすると 〇〇.giga-site.com のhttpsの共有URLが発行され、関係者に渡してそれぞれの環境で表示を確認してもらえます。修正したら同じURLのままファイルを差し替えられるので、リンクを送り直さずに「直ったか」を再確認してもらえます。アクセスログで誰がいつ見たかも残せます。

## よくある質問

### 時刻がちょうど9時間ずれます。

UTCとJST(日本時間)の取り違えが典型です。UTCの値をローカル時刻として解釈している、またはその逆になっていないか確認してください。内部はUTCで持ち、表示時にローカルへ変換する方針に揃えると安定します。

### 日付だけが1日ずれます。

日本時間の午前0時台はUTCではまだ前日のため、日付部分だけを切り出すと1日前後することがあります。時刻まで含めてタイムゾーンを意識して変換してください。

### 日時の文字列はどう渡すのが安全ですか。

タイムゾーンを明示したISO 8601形式(末尾にZやオフセットが付く形)が安全です。年月日だけの曖昧な形式は環境によって解釈が変わり、ずれの原因になります。

### 開発環境では正しいのに公開すると違います。

実行環境のタイムゾーン設定の違いが影響している可能性があります。環境に依存せずコード側で明示的に変換し、実際に配信したページを複数の環境で開いて確認してください。

### 原因が分からないときはどこから確認すべきですか？

まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。

## 関連記事

- [rem・emで指定した文字サイズが想定とずれるときの原因と対処](https://giga-site.com/articles/rem-em-font-size-wrong/index.md)
- [公開後にJavaScriptが動かないときの原因と直し方](https://giga-site.com/articles/javascript-not-working/index.md)
- [公開後に動画が再生されないときの対処](https://giga-site.com/articles/video-not-playing/index.md)
- [公開したHTMLのフォームが送信できないときの対処](https://giga-site.com/articles/form-not-submitting/index.md)
- [iframeが表示されないときの原因と対処](https://giga-site.com/articles/iframe-not-showing/index.md)
- [外部CDNのCSS・JSが読み込めないときの対処](https://giga-site.com/articles/external-cdn-not-loading/index.md)

```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "日付・時刻がずれるときの対処（タイムゾーン）",
  "description": "予約日時が9時間ズレる、日付が1日前後する。原因の多くは UTC とローカル時刻の混在です。タイムゾーンのずれが起きる仕組みと典型パターンを押さえ、バグを再発させない直し方を整理します。",
  "datePublished": "2026-06-24",
  "dateModified": "2026-06-25",
  "mainEntityOfPage": "https://giga-site.com/articles/timezone-date-wrong",
  "url": "https://giga-site.com/articles/timezone-date-wrong",
  "inLanguage": "ja",
  "image": "https://giga-site.com/og-image.png",
  "articleSection": "トラブルシュート",
  "author": {
    "@type": "Organization",
    "name": "ギガサイト便"
  },
  "publisher": {
    "@type": "Organization",
    "name": "ギガサイト便"
  },
  "mainEntity": [
    {
      "@type": "Question",
      "name": "時刻がちょうど9時間ずれます。",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "UTCとJST(日本時間)の取り違えが典型です。UTCの値をローカル時刻として解釈している、またはその逆になっていないか確認してください。内部はUTCで持ち、表示時にローカルへ変換する方針に揃えると安定します。"
      }
    },
    {
      "@type": "Question",
      "name": "日付だけが1日ずれます。",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "日本時間の午前0時台はUTCではまだ前日のため、日付部分だけを切り出すと1日前後することがあります。時刻まで含めてタイムゾーンを意識して変換してください。"
      }
    },
    {
      "@type": "Question",
      "name": "日時の文字列はどう渡すのが安全ですか。",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "タイムゾーンを明示したISO 8601形式(末尾にZやオフセットが付く形)が安全です。年月日だけの曖昧な形式は環境によって解釈が変わり、ずれの原因になります。"
      }
    },
    {
      "@type": "Question",
      "name": "開発環境では正しいのに公開すると違います。",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "実行環境のタイムゾーン設定の違いが影響している可能性があります。環境に依存せずコード側で明示的に変換し、実際に配信したページを複数の環境で開いて確認してください。"
      }
    },
    {
      "@type": "Question",
      "name": "原因が分からないときはどこから確認すべきですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。"
      }
    }
  ]
}
```
