Ubuntu/LinuxMintをJSTからUTCへtimezone変更する手順

記事の更新日:2026/09/29 評価を加筆

1.概要

PCが単体で動作しているときには時刻の問題は小さなことでした。ネットワークに接続して様々な機器と連携するようになり、時刻のズレが大きな問題となり、NTPを利用した時刻同期が利用されるようになりました。

更に、海外とのデータ交換をするようになるとTImeZoneのズレが問題になりました。同じ9:00であっても、UTCとJSTでは異なります。これが問題になり始めたのはクラウドの利用が始まった頃だと思います。AWSなどのクラウド環境の機器はUTCで運用されています。では、それに接続する機器はどうすべきかについて記述をします。

aws環境はtimezoneがUTCに設定されています。開発用途のPC(ubuntu)は通常はJST環境のため、時刻が合わないで困ることもありました。例えば、日替わりなど日付が変わる処理が存在する場合、UTCとJSTで時刻が異なるために9時間の時間差が発生するので、処理ロジックにTimezone認識が必要です。PC(ubuntu)をUTCに変更すると問題は解決できそうなので試してみました。

私の評価は以下の通りです。

(1) クラウド環境のサーバはUTCで運営されています
(2) PCは普通にセットアップするとJSTに設定されます
(3) クラウド環境とPC間でデータのやり取りを行うと、9時間の時差が問題となります
(4) 時差の問題を回避には、PCをUTC設定ですが、勤怠などJST依存の問題が起きます
(5) クラウド環境とPC間でデータのやり取りを行うPCだけ、UTC設定をします

2.詳細

参考資料に沿って確認と設定をします。

$ date
$ timedatectl | grep 'Time zone'

と実行して、Time zone: Asia/Tokyo (JST, +0900)を確認します

$ sudo timedatectl set-timezone UTC

でtimezoneをUTCに変更します。

$ date
$ timedatectl | grep 'Time zone'

と実行して、 Time zone: UTC (UTC, +0000)を確認します。

3.所見

クラウド環境を利用するとローカルPCとのTimezoneの差を認識します。特に、24時間稼働するシステムがある場合は、日付の変わるタイミングが異なるためです。クラウド側に合わせる以外に良い手段はないと感じています。

時刻同期をUTCに変更するとデータ内の時刻のズレや実行時間のズレなどが改善されます。早く気がつくべきことであったと思いますが、クラウドを前提とした環境に変わってから10数年なので、まだ、認識されていないことなのでしょう。これから先はUTCにするべきです。

腕時計などは時刻をTImeZoneに合わせる機能を持っています。海外旅行をする方向けの機能ですが、現地時間に時計を合わせるのでなく、TImeZone変更機能を利用する。時計内部はUTCを基準に設計されている気がします。

4.追加

SystemRescueを利用して、システムのバックアップを取得することがあります。このときにも時刻が問題となります。私はSystemRescueを起動した時に、timedatectlコマンドを利用して、TimezoneをAsia/Tokyoに必ずセットします。

バックアップしたファイルの日付が既定値ではUTCとなってしまうからです。UTSで保存されたデータを参照すると、9時間の時差が問題となり、未来のデータを操作することになる場合があり、エラーとなります。

これを回避するには、TimeZoneを設定した上で、ntpdateコマンドで強制的に時刻同期をします。これでPCの時刻はJSTにセットされ、日付が未来を指す問題を回避できます。もちろん、ネットワークに接続してインターネット上のNTPサーバとコンタクトする必要があります。

以前のSystemResucueには、UTC以外のTImeZone設定ができない事がありました。以前はバックアップを取得してから9時間経過後にリストアする処理をしていたこともあります。新しい版( v9以降 )ではこの問題は改善されています。

参考

[本ブログ内参照]
・ubuntuで外部接続できない環境でFirefoxを利用すると英語環境になる
[外部サイト参照]
・Linux(Ubuntu)でタイムゾーンを変更する方法

コメント