Ubuntuでタイムゾーンを変更する方法|JST・UTCの確認と設定手順を解説

目次

はじめに

Ubuntuを使っていて「時刻がずれている」「ログの時間が合わない」「cronの実行時間がおかしい」と感じたことはありませんか。
その原因の多くは、タイムゾーン設定にあります。

特にUbuntuは、デスクトップ用途だけでなく、VPSやクラウドサーバー、開発環境としても広く使われています。そのため、初期設定のまま使っていると、日本時間(JST)ではなくUTC(協定世界時) が設定されているケースも珍しくありません。

本記事では、Ubuntu初心者の方でも迷わないように、

  • タイムゾーンの基本的な考え方
  • 現在の設定確認方法
  • 安全な変更手順

を順番に解説していきます。まずは、そもそも「タイムゾーンとは何か」から確認していきましょう。

1. Ubuntuのタイムゾーンとは何か

1.1 タイムゾーンとシステム時刻の関係

タイムゾーンとは、世界をいくつかの時間帯に分けた基準のことです。
Ubuntuを含むLinuxでは、内部的には「現在時刻」と「タイムゾーン」を組み合わせて、私たちが見る日時を表示しています。

重要なポイントは次の2つです。

  • システムは「基準となる時刻」を持っている
  • その時刻を、どの地域の時間として表示するかを決めるのがタイムゾーン

つまり、同じ時刻データでも、タイムゾーンが違えば表示される時間は変わるという仕組みです。

1.2 UTCとJST(日本標準時)の違い

Ubuntuの初期設定やサーバー環境では、タイムゾーンが UTC に設定されていることがよくあります。

  • UTC(協定世界時):世界共通の基準時間
  • JST(日本標準時):UTCより9時間進んだ時間(UTC+9)

たとえば、UTCで「00:00」の場合、日本では「09:00」になります。
この差を理解していないと、以下のような混乱が起こります。

  • ログの時刻が実際より9時間ずれて見える
  • cronが想定と違う時間に実行される
  • アプリケーションの日時表示がおかしく見える

1.3 タイムゾーン未設定・誤設定で起こる問題

タイムゾーンが正しく設定されていない場合、見た目の問題だけでなく、実務上のトラブルにつながることがあります。

代表的な例は以下のとおりです。

  • サーバーログの時刻が合わず、障害調査が困難になる
  • バックアップや定期処理の実行時間がずれる
  • データベースに記録される時刻が想定と異なる

特に複数人で開発や運用を行う環境では、タイムゾーンの違いが原因で認識ズレが発生しやすいため、早い段階での理解と整理が重要です。

2. 現在のタイムゾーンを確認する方法

Ubuntuでタイムゾーンを変更する前に、まず 現在どのタイムゾーンが設定されているか を確認しておくことが大切です。
Ubuntuでは、公式に推奨されている確認方法がいくつか用意されています。

ここでは初心者の方でも安全に確認できる方法を中心に解説します。

2.1 timedatectl で確認する方法(推奨)

現在のUbuntuでは、タイムゾーンや時刻設定を確認・管理するために timedatectl というコマンドが標準で用意されています。

ターミナルを開き、次のコマンドを実行してください。

timedatectl

実行すると、以下のような情報が表示されます。

  • Local time(ローカル時刻)
  • Universal time(UTC)
  • Time zone(設定されているタイムゾーン)
  • System clock synchronized(時刻同期の状態)

この中で特に重要なのが Time zone の行です。

例:

Time zone: Asia/Tokyo (JST, +0900)

この場合、Ubuntuは日本時間(JST)で動作しています。

もし次のように表示されている場合は、UTCが設定されています。

Time zone: Etc/UTC (UTC, +0000)

2.2 表示結果の見方と注意点

timedatectl の出力では、複数の時刻が同時に表示されますが、混乱しやすいポイントがあります。

  • Local time → 現在のタイムゾーンを反映した時刻
  • Universal time → UTC基準の時刻
  • RTC time → ハードウェアクロックの時刻(機種によって意味が異なる)

初心者の方は、
👉 Time zone と Local time が正しいか
この2点だけをまず確認すれば問題ありません。

2.3 /etc/timezone ファイルで確認する方法

Ubuntuでは、設定されているタイムゾーンがファイルとしても保存されています。

次のコマンドで内容を確認できます。

cat /etc/timezone

表示例:

Asia/Tokyo

この方法はシンプルですが、確認専用として使うのが安全です。
このファイルを直接編集する方法も存在しますが、現在は推奨されていません。

理由としては、

  • timedatectl との整合性が取れなくなる可能性がある
  • システム設定が不完全になる場合がある

といったリスクがあるためです。

2.4 GUI環境でも確認できるか?

Ubuntuデスクトップ版を使っている場合は、設定画面からも確認できます。

  • 設定
  • 日付と時刻
  • タイムゾーン

ただし、サーバー用途やSSH接続時にはGUIが使えないため、基本的には timedatectl を使った確認方法を覚えておくのがおすすめです。

3. Ubuntuでタイムゾーンを変更する方法(CLI)

現在のタイムゾーンを確認できたら、次は 実際に変更する手順 です。
Ubuntuでは、公式に推奨されている安全な方法が用意されており、特別な設定ファイルを手作業で編集する必要はありません。

ここでは コマンドライン(CLI)での変更方法 を中心に解説します。

3.1 timedatectl set-timezone を使った基本的な変更方法

Ubuntuでタイムゾーンを変更する最も確実な方法は、timedatectl set-timezone コマンドを使う方法です。

基本構文は次のとおりです。

sudo timedatectl set-timezone タイムゾーン名

たとえば、日本時間(JST)に設定したい場合は、以下を実行します。

sudo timedatectl set-timezone Asia/Tokyo

コマンドを実行すると、特にメッセージは表示されませんが、正常に完了しています。

3.2 タイムゾーン変更後の確認方法

設定が反映されたかどうかは、再度 timedatectl を実行して確認します。

timedatectl

次のように表示されていれば、変更は成功です。

Time zone: Asia/Tokyo (JST, +0900)

この変更は 即時反映 され、再起動は不要です。

3.3 利用可能なタイムゾーン一覧を確認する方法

「Asia/Tokyo」のようなタイムゾーン名が分からない場合は、一覧から確認できます。

timedatectl list-timezones

このコマンドを実行すると、世界中のタイムゾーンが一覧表示されます。
数が多いため、日本関連のみを絞り込むのがおすすめです。

timedatectl list-timezones | grep Asia

その中に Asia/Tokyo が含まれていることを確認できます。

3.4 root権限(sudo)が必要な理由

タイムゾーンの変更は、システム全体に影響する設定です。
そのため、一般ユーザーではなく 管理者権限(sudo) が必要になります。

もし次のようなエラーが出た場合は、

Failed to set time zone: Access denied

sudo を付け忘れていないかを確認してください。

3.5 古い方法(非推奨)について

インターネット上には、以下のような方法を紹介している古い記事も見かけます。

  • /etc/timezone を直接編集する
  • /etc/localtime を手動で上書きする

これらの方法は 現在のUbuntuでは推奨されていません
timedatectl を使うことで、関連する設定が正しく一括管理されるため、特別な理由がない限り、公式の方法を使うようにしましょう。

4. Ubuntuデスクトップ(GUI)でタイムゾーンを変更する方法

Ubuntuデスクトップ版を使用している場合は、設定画面(GUI)からタイムゾーンを変更することもできます。
コマンド操作に慣れていない初心者の方にとっては、こちらの方法のほうが分かりやすいでしょう。

ただし、GUI設定には注意点もあるため、仕組みを理解しながら進めることが重要です。

4.1 設定画面からタイムゾーンを変更する手順

以下は、Ubuntu標準デスクトップ環境での一般的な操作手順です。

  1. 画面右上のシステムメニューをクリック
  2. 「設定」を開く
  3. 「日付と時刻」を選択
  4. 「タイムゾーン」を確認・変更する

地図が表示される場合は、日本付近をクリックすることで自動的に Asia/Tokyo(JST) が選択されます。

4.2 自動設定(位置情報)と手動設定の違い

UbuntuのGUI設定では、タイムゾーンの自動設定が有効になっていることがあります。

  • 自動設定:位置情報を元にタイムゾーンを決定
  • 手動設定:ユーザーが明示的に指定

ノートPCなどを持ち運ぶ環境では便利ですが、デスクトップPCや固定サーバー用途では、意図せず変更されるリスクがあります。

安定運用を重視する場合は、
👉 自動設定をオフにし、手動で Asia/Tokyo を指定するのがおすすめです。

4.3 GUIで設定しても反映されない場合

GUIで設定したにもかかわらず、時刻が正しく表示されないケースがあります。

よくある原因は次のとおりです。

  • NTP(時刻同期)の影響で時刻が補正されている
  • CLI側の設定と食い違っている
  • 一部アプリケーションが独自の時刻設定を持っている

このような場合は、ターミナルを開いて次のコマンドで確認してください。

timedatectl

GUI設定であっても、内部的には timedatectl が使われているため、
最終的な状態はこのコマンドで確認するのが確実です。

4.4 GUIとCLI、どちらを使うべきか

用途別に考えると、使い分けがおすすめです。

  • デスクトップ用途・初心者 → GUI操作で問題なし
  • サーバー・開発環境・SSH接続 → CLI(timedatectl)を使用

特にトラブルシューティング時は、
GUIよりも CLIのほうが情報量が多く、原因特定がしやすい という利点があります。

5. サーバー環境(VPS・クラウド)での注意点

Ubuntuをサーバー用途で使っている場合、デスクトップ環境とは考え方が少し異なります。
VPSやクラウド環境では、あえてUTCのまま運用されているケースが多いため、理由と注意点を理解しておくことが重要です。

5.1 サーバー初期設定がUTCになっている理由

多くのVPSやクラウドでは、Ubuntuの初期タイムゾーンが UTC に設定されています。
これは仕様というより、運用上の合理性によるものです。

主な理由は以下のとおりです。

  • 世界中の拠点・ユーザーと時刻を統一しやすい
  • 夏時間(DST)の影響を受けない
  • ログ解析や障害対応で混乱が起きにくい

特に複数リージョンをまたぐシステムでは、UTCを基準にすることでトラブルを減らせるというメリットがあります。

5.2 JSTに変更しても問題ないケース

一方で、次のような環境では JSTへ変更しても問題ありません

  • 日本国内のみで使う個人サーバー
  • 小規模な業務システム
  • 学習・検証目的の環境

この場合、ログや管理画面の時刻が直感的になり、運用が楽になることもあります。

ただし、途中から変更する場合は注意が必要です。

5.3 運用中サーバーで変更する際の注意点

すでに稼働しているサーバーでタイムゾーンを変更すると、
以下の影響が出る可能性があります。

  • ログの時刻が途中から変わる
  • 定期処理(cron)の実行タイミングが変化する
  • 時刻を元に処理するアプリケーションに影響が出る

そのため、次のような対応がおすすめです。

  • 変更前後でログに注記を残す
  • cronの設定時刻を再確認する
  • 影響範囲を把握した上で作業する

5.4 NTP(時刻同期)との関係

Ubuntuでは、通常 NTP(Network Time Protocol) によって時刻同期が行われています。

タイムゾーン変更自体はNTPと競合しませんが、

  • 時刻そのものがずれている
  • 強制的に補正される

といった挙動が気になる場合は、次の点を確認してください。

timedatectl

表示される
System clock synchronized: yes
となっていれば、時刻同期は正常です。

6. タイムゾーン変更後に確認すべきポイント

Ubuntuでタイムゾーンを変更した後は、「設定したから終わり」ではありません。
運用上のトラブルを防ぐために、必ず確認しておきたいポイントがあります。

ここでは、初心者の方でも押さえておくべき確認事項を整理します。

6.1 再起動後も設定が保持されているか

まず確認したいのは、再起動後もタイムゾーンが維持されているかです。

Ubuntuでは、timedatectl を使って変更した場合、通常は設定が保持されます。
念のため、再起動後に次のコマンドを実行してください。

timedatectl

Time zone: Asia/Tokyo のように表示されていれば問題ありません。

6.2 cron(定期実行)の時刻に影響が出ていないか

cronは、システムのローカル時刻を基準に動作します。
そのため、タイムゾーンを変更すると、実行時刻が変わる可能性があります。

確認ポイントは以下のとおりです。

  • 想定していた時刻に実行されているか
  • UTC前提で設定していなかったか
  • 実行ログの時刻と内容が一致しているか

特にサーバー運用では、変更前後で cron設定を必ず見直す ようにしましょう。

6.3 ログファイルの時刻表示

システムログやアプリケーションログも、
タイムゾーン変更を境に表示時刻が変わります

よくある混乱として、

  • 古いログはUTC、新しいログはJST
  • 時刻が飛んだように見える

といったケースがあります。

これは異常ではないため、
「いつからタイムゾーンを変更したか」 を把握しておくことが重要です。

6.4 Dockerや仮想環境を使っている場合の注意

Dockerコンテナや仮想マシンを使っている場合、ホストOSとゲスト環境のタイムゾーンは別管理 になることがあります。

よくある例として、

  • ホストはJSTだが、コンテナはUTCのまま
  • アプリのログ時刻だけずれている

という状態が発生します。

この場合、Ubuntu本体の設定だけでなく、
コンテナ側のタイムゾーン設定も確認する必要があります

7. よくあるトラブルと対処法

Ubuntuでタイムゾーンを設定・変更したあと、「手順どおりやったはずなのにおかしい」と感じるケースは少なくありません。
ここでは、実際によく起きるトラブルと、その考え方・対処法を整理します。

7.1 タイムゾーンを変更したのに時刻がずれたまま

タイムゾーンを正しく設定しても、時刻そのものがずれていると、表示は正しくなりません。

この場合、次の点を確認してください。

timedatectl

確認ポイントは以下です。

  • Time zone が意図したものになっているか
  • System clock synchronizedyes になっているか

もし no の場合は、時刻同期がうまく行われていません。
ネットワーク接続やNTPの状態を確認する必要があります。

7.2 NTPの影響で時刻が勝手に戻る

「手動で直したのに、しばらくすると元に戻る」という場合、
NTPによる自動補正が原因であることがあります。

Ubuntuでは通常、NTPは有効になっていますが、
タイムゾーンとNTPは別物です。

  • NTP:時刻そのものを正確に保つ
  • タイムゾーン:その時刻をどう表示するか

timedatectl set-timezone を使っていれば、NTPによってタイムゾーンが勝手に変わることはありません。

もし不安な場合は、設定状態を次のように確認します。

timedatectl status

7.3 アプリケーションだけ時刻がおかしい

Ubuntu本体の時刻は正しいのに、特定のアプリケーションだけ時刻がずれている場合があります。

よくある原因は以下のとおりです。

  • アプリがUTC前提で時刻を扱っている
  • 独自のタイムゾーン設定を持っている
  • Dockerや仮想環境内で動作している

この場合、OS設定だけでなく、
アプリケーション側の設定や仕様を確認する必要があります

特にWebアプリやデータベースでは、「内部はUTC、表示時に変換する」という設計も一般的です。

7.4 設定変更が反映されない・エラーが出る

まれに、次のようなエラーが出ることがあります。

  • 権限不足(sudoを付けていない)
  • 古いUbuntuで timedatectl が使えない
  • systemd関連の問題

基本的な対処としては、

  • sudo を付けて実行しているか確認
  • Ubuntuのバージョンを確認
  • 再ログインや再起動を試す

それでも解決しない場合は、環境依存の問題である可能性も考慮しましょう。

8. Ubuntuでのタイムゾーン管理のベストプラクティス

ここまでで、Ubuntuにおけるタイムゾーンの仕組みと設定方法を解説してきました。
最後に、実務で混乱しにくい考え方を整理します。

8.1 サーバーはUTC、表示は変換という考え方

実務やチーム開発では、次の運用がよく採用されます。

  • OS・サーバー:UTCのまま運用
  • アプリケーション・表示:JSTなどに変換

この方法のメリットは以下のとおりです。

  • 世界共通の基準でログ・時刻管理ができる
  • 夏時間などの影響を受けにくい
  • 複数地域のユーザーがいても整理しやすい

特に、将来的に規模が大きくなる可能性がある場合は、UTC基準の運用を前提に設計するとトラブルが減ります。

8.2 個人利用・学習用途ならJSTでも問題ない

一方で、次のようなケースでは JST運用でも問題ありません

  • 個人PC
  • 学習用サーバー
  • 国内向けの小規模環境

この場合は、「今が何時なのか」が直感的に分かることを優先して良いでしょう。

重要なのは、
👉 どの基準で運用しているかを自分で把握していること
です。

8.3 チーム・複数環境ではルールを統一する

トラブルの多くは、「人によって、環境によって、基準が違う」ことから発生します。

そのため、

  • サーバーはUTC
  • ログはUTC
  • 表示は変換

といった ルールを明確に共有する ことが重要です。

9. FAQ(よくある質問)

9.1 UbuntuでタイムゾーンをJSTに変更する安全な方法は?

timedatectl set-timezone Asia/Tokyo を使用する方法が、現在最も安全で推奨されています。
設定ファイルを手動で編集する必要はありません。

9.2 タイムゾーンを変更するとシステムに影響はありますか?

時刻の表示やcronの実行時刻、ログの表示時刻に影響します。
ただし、システム自体が壊れることはありません。
運用中のサーバーでは影響範囲を確認した上で変更してください。

9.3 UbuntuはUTCのまま使ったほうがいいのでしょうか?

サーバーやチーム開発では、UTCのまま使うメリットが大きいです。
個人用途や国内限定環境では、JSTでも問題ありません。

9.4 再起動するとタイムゾーンが元に戻ることはありますか?

timedatectl を使って設定した場合、再起動しても保持されます。
戻る場合は、別の設定や自動設定が影響している可能性があります。

9.5 Dockerを使っている場合もUbuntu側の設定で直りますか?

Dockerコンテナは、ホストOSとは別にタイムゾーンを持つことがあります。
Ubuntu側が正しくても、コンテナ内の設定を確認する必要があります。

10. まとめ

Ubuntuのタイムゾーン設定は、一見すると小さな設定ですが、ログ・定期処理・運用トラブルに直結する重要な要素です。

本記事のポイントを整理すると、次のとおりです。

  • 現在の設定は timedatectl で確認する
  • 変更は timedatectl set-timezone を使う
  • サーバー用途ではUTC運用も検討する
  • 変更後はcronやログを必ず確認する

タイムゾーンを正しく理解し、自分の用途に合った設定を選ぶことで、Ubuntuをより安心して運用できるようになります。