1つのパソコンで[Windows]と[Ubuntu]の両方を使っている場合(デュアルブートなど)、表示される時刻に「ズレ」が生じることがあります。ズレが9時間の場合、これは両方のOSで時刻の取り扱いに違いがあることが原因です。
なぜ9時間ずれるのか
時刻に9時間のズレが生じるのは時差によるもので、日本の時差が協定世界時(UTC)から+9時間だからです。
パソコンは本体に時刻の情報(ハードウェアクロック)を持っており、その時刻をWindowsは「ローカル時刻(日本標準時/JST)」とみなしますが、UbuntuをはじめとしたLinuxでは「協定世界時/UTC」とみなします。時刻はインターネット上から自動的に同期してしまうため、[Windows]と[Ubuntu]の両方を使っていると同期のタイミングによって「時計がずれる」と言うことが起こりえます。
Windowsで「起動時に時刻を同期する」としても良いですが、本体の時刻を「ローカル時刻とUTCのどちらとみなすか」を揃えることもできるので、今回はUbuntuを「ローカル時刻である」とみなすよう変更してみました。
ローカル時刻とみなすやり方
- 端末より以下のコマンドを実行し、現在の状態を確認します。
sudo hwclock --verbose
実行結果に「ハードウェアの時刻は UTC です」や「ハードウェアの時刻が UTC に設定されているものと仮定します。」などが含まれていればハードウェアクロック=UTCとみなしています。「sudo: hwclock: コマンドが見つかりません」とエラーが表示される場合は【util-linux-extra】をインストールします。sudo apt-get install util-linux-extra
- 端末より以下のコマンドを実行し、ハードウェアクロック=ローカル時刻にします。
sudo hwclock --verbose --systohc --localtime
ちなみに、元に戻す(ハードウェアクロック=UTC)には以下のコマンドを実行します。
sudo hwclock --verbose --systohc --utc
- 必要であれば以下のコマンドを実行して内容を確認します。
sudo hwclock --verbose
実行結果に「ハードウェアの時刻は ローカル時刻 です」や「ハードウェアの時刻が ローカル時刻 に設定されているものと仮定します。」などが含まれていればハードウェアクロック=ローカル時刻とみなしています。
ハードウェアクロックを「ローカル時刻」とみなすやり方は以上です。
ちなみにWindowsの方を「UTCとみなす」こともできますが、レジストリを編集する必要があるためUbuntuでコマンドを実行したほうが簡単でしょう。