Raspberry Piをサーバー用途で運用している場合、時刻そのものは合っていても、タイムゾーンがUTCのままになっていることがあります。この状態では、cron、ログ、アプリケーション、データベースの時刻が日本時間の想定とずれるため、実務上の混乱が発生しやすくなります。
本記事では、Raspberry PiのタイムゾーンがUTCになっている場合の確認方法、日本時間(JST)への修正手順、設定後の確認方法、関連する注意点を順番に整理します。
Raspberry Piの時刻がズレる原因
原因は、Raspberry Piのタイムゾーン設定がUTCのままになっていることです。初期状態や設定未実施の環境では、地域設定を明示的に行っていないため、UTCで運用されていることがあります。
この場合、システム内部ではUTC基準で時刻が扱われるため、日本時間での運用を前提にしているcronやログ監視、LaravelやPHPの処理時刻、DBのタイムスタンプにズレが生じます。特に長期間稼働している環境では、時刻ズレに気づきにくいため注意が必要です。
現在のタイムゾーンを確認する方法
まずは現在の時刻表示を確認します。もっとも簡単なのは date コマンドです。
date
UTCのままになっている場合の例は以下の通りです。
Thu Mar 26 00:21:41 UTC 2026
出力結果の末尾が UTC であれば、タイムゾーンが世界標準時のままです。日本で使う前提であれば、この状態は修正対象です。
日本時間(JST)に変更する手順
タイムゾーンの変更方法は大きく分けて2通りあります。GUIベースで設定する方法と、CLIから一発で変更する方法です。どちらを使っても結果は同じです。
raspi-configを使う方法
Raspberry Piの標準設定ツールを使う方法です。画面操作で設定したい場合はこちらが分かりやすいです。
sudo raspi-config
起動後は以下の順で選択します。
- Localisation Options
- Timezone
- Asia
- Tokyo
設定後に画面を終了すれば、タイムゾーンは日本時間に変更されます。
timedatectlを使う方法
CLIで即時に設定したい場合は timedatectl を使います。サーバー用途やSSH接続中の作業ではこちらが実用的です。
sudo timedatectl set-timezone Asia/Tokyo
このコマンドでシステムのタイムゾーンを日本時間に変更できます。再起動は通常不要です。
設定が正しく反映されたか確認する
設定変更後は、再度 date コマンドを実行して表示を確認します。
date
正常な例は以下の通りです。
Thu 26 Mar 09:23:03 JST 2026
末尾が JST になっていれば、日本時間として表示されています。UTCから9時間進んだ値になっていることも合わせて確認してください。
詳細な状態を確認する方法
より詳細に確認するには timedatectl を実行します。タイムゾーンだけでなく、NTPや同期状態もまとめて確認できます。
timedatectl
正常な例は以下の通りです。
Local time: Thu 2026-03-26 09:23:26 JST
Universal time: Thu 2026-03-26 00:23:26 UTC
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
ここで特に確認すべき項目は Local time、Universal time、Time zone、System clock synchronized、NTP service です。
Local timeとUniversal timeの違い
Local time は設定した地域のローカル時刻です。日本時間に設定していればJSTで表示されます。一方、Universal time はUTCです。こちらは世界標準時として常に基準となる時刻です。
両者が異なるのは正常です。日本時間ではUTCに対して9時間の差があるため、Local time が9時間進んで表示されます。
NTP(時刻同期)の確認
タイムゾーン設定と合わせて、NTPによる時刻同期が有効かどうかも確認してください。以下の状態が望ましいです。
- System clock synchronized: yes
- NTP service: active
この状態であれば、インターネット経由で時刻が自動補正されます。NTPが無効な場合、手動で時刻を合わせても再起動後や長期運用時にズレる可能性があります。
NTPを有効化するコマンドは以下です。
sudo timedatectl set-ntp true
Raspberry Pi特有の注意点(RTCなし)
Raspberry Piでは、一般的なPCと異なり、標準構成ではハードウェア時計(RTC)を持たないことがあります。そのため、timedatectl の出力で RTC time: n/a と表示されても異常ではありません。
これは、電源断や再起動直後に正確な時刻を保持できないことを意味します。ただし、ネットワーク接続後にNTPで自動補正されるため、通常運用では大きな問題にならないケースが多いです。
一方で、ネットワークに接続しない環境や、起動直後の時刻精度が重要な用途ではRTCモジュールの追加を検討する余地があります。
実務で影響が出るポイント(cron・Laravel・DB)
タイムゾーンがUTCのままだと、見た目の時刻表示だけでなく、実務上の処理にも影響します。代表例は以下の通りです。
- cronがUTC基準で動作する
- ログの時刻が9時間ずれる
- LaravelやPHPの表示時刻とOS時刻が一致しない
- DBのタイムスタンプが想定と異なる
アプリケーション側でもタイムゾーン設定を明示しておくと、OS設定との不整合を減らせます。Laravelでは以下の設定を確認します。
'timezone' => 'Asia/Tokyo'
MySQLやMariaDBでは、グローバル設定とセッション設定を確認しておくと安全です。
SELECT @@global.time_zone, @@session.time_zone;
結果としては SYSTEM または +09:00 が望ましい状態です。アプリ側とDB側でタイムゾーンが混在すると、保存時刻と表示時刻の解釈がずれる原因になります。
コアコマンドまとめ
sudo timedatectl set-timezone Asia/Tokyo
date
timedatectl
最低限この3つを把握しておけば、確認、修正、再確認まで一通り対応できます。
まとめ
Raspberry Piの時刻がずれて見える原因が、実際には時刻そのものではなくタイムゾーン設定であるケースは少なくありません。UTCのままでは、日本時間前提の運用と整合しなくなります。
対応としては、まず date で現在の表示を確認し、必要であれば sudo timedatectl set-timezone Asia/Tokyo で修正します。その後、timedatectl でタイムゾーンとNTP状態を確認してください。
あわせて、LaravelやDBなどアプリケーション周辺のタイムゾーン設定も確認しておくと、時刻ズレによる運用トラブルを防ぎやすくなります。

コメント