Windowsで日時やタイムゾーンの設定を変更する方法

Windowsで日時やタイムゾーンの設定を変更する方法

WindowsやLinuxといった一般的なOSでは、インターネット上にあるNTPサーバー(時刻配信サーバー)に接続して自分自身の時刻を合わせる時刻同期機能があり、Windows 10もデフォルトでMicrosoftが提供するNTPサーバーに接続して時刻を合わせてくれています。

ですが、何らかの原因で正常に時刻が同期されず時刻のずれが大きくなると、インターネット上のサーバーに接続できなくなったり、更新プログラムをダウンロードできなくなったりと、さまざまな機能の動作に影響を及ぼします。

そこでここではWindows 10を例に、日時やタイムゾーンの設定を、Windowsの「設定」からやコマンド操作で変更する方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit22H2

タイムゾーン設定を変更する

時刻が数時間単位でズレてしまっているときは「タイムゾーン」の設定を見直します。

タイムゾーンの設定をWindowsの「設定」から変更するときは「時刻と言語」を選択します。

Windowsで日時やタイムゾーンの設定を変更する方法

「時刻と言語」画面が表示されるので「日付と時刻」で「タイムゾーンを自動的に設定する」をオフにしてから、日本国内であればタイムゾーンを「(UTC+09:00) 大阪、札幌、東京」に設定します。

Windowsで日時やタイムゾーンの設定を変更する方法

コマンドで変更するときは

コマンド操作でタイムゾーンの設定を変更するときは、管理者権限でPowerShellを起動して、以下のコマンドを実行します。

PS> Get-TimeZone

日本国内の場合、タイムゾーンが「(UTC+9:00)大阪、札幌、東京」に設定されていればOKです。

Windowsで日時やタイムゾーンの設定を変更する方法

タイムゾーンを正しく設定し直す場合は、以下のコマンドを実行します。

PS> Set-TimeZone -Id "Tokyo Standard Time"

上のコマンドでは、タイムゾーンを日本「Tokyo Standard Time」で指定していますが、日本以外のタイムゾーンを指定する場合は、以下のコマンドレットであらかじめ目的のタイムゾーンのIDを調べてから設定します。

PS> Get-TimeZone -ListAvailable

Windowsで日時やタイムゾーンの設定を変更する方法

時刻の同期設定を変更する

時刻の同期設定をWindowsの「設定」から変更するときは「時刻と言語」を選択します。

Windowsで日時やタイムゾーンの設定を変更する方法

「時刻と言語」画面が表示されるので「日付と時刻」で「時刻を自動的に設定する」をオンにすることで、NTPサーバー「time.windows.com」に接続して自動的に時刻を調整してくれます。(デフォルトでオンに設定されているはずです。)

Windowsで日時やタイムゾーンの設定を変更する方法

時刻を今すぐNTPサーバーと同期したいときは「時刻を同期する」にある「今すぐ同期」をクリックすることで、時刻のズレを修正できます。

Windowsで日時やタイムゾーンの設定を変更する方法

コマンドで変更するときは

時刻の同期設定をコマンドで変更するときは、管理者権限でPowerShellを起動し、以下のコマンドを実行して「Windows Time」サービスを起動します。

PS> Start-Service -Name W32Time

サービスを起動したら、サービスが起動していることを確認します。

PS> Get-Service -Name W32Time

「Status」欄が「Running」と表示されていればOKです。

Windowsで日時やタイムゾーンの設定を変更する方法

次に、設定されているNTPサーバーと自動的に同期するよう設定します。

PS> w32tm /config /syncfromflags:ALL

次に、設定されているNTPサーバーと即時で同期します。

PS> w32tm /resync

コマンド実行後「コマンドは正しく完了しました。」と表示されればOKです。

Windowsで日時やタイムゾーンの設定を変更する方法

つぎに、正常に同期されているかを確認します。

PS> w32tm /query /status

ソース欄で同期先のNTPサーバーを確認し、最終正常同期時刻が更新されていれば、問題なく時刻同期されています。

Windowsで日時やタイムゾーンの設定を変更する方法

日時を手動で設定する

何らかの事情で、日時を手動で設定したいときは、以下の手順で設定できます。

「時刻と言語」の設定画面で「日付と時刻」の「時刻を自動的に設定する」をオフにします。

Windowsで日時やタイムゾーンの設定を変更する方法

すると「日付と時刻を手動で設定」にある「変更」ボタンをクリックできるようになるので、クリックします。

Windowsで日時やタイムゾーンの設定を変更する方法

「日付と時刻の変更」画面が表示されるので、日時を設定して「変更」をクリックします。

Windowsで日時やタイムゾーンの設定を変更する方法

以上で変更完了です。

コマンドで設定するときは

コマンドで時刻の同期をオフにするときは、管理者権限でPowerShellを起動し、以下のコマンドを実行して「Windows Time」サービスを起動します。

PS> Start-Service -Name W32Time

サービスを起動したら、サービスが起動していることを確認します。

PS> Get-Service -Name W32Time

「Status」欄が「Running」と表示されていればOKです。

Windowsで日時やタイムゾーンの設定を変更する方法

次に、時刻の自動同期をオフに設定します。

PS> w32tm /config /update /syncfromflags:NO

日時を手動設定するときは、NICT(情報通信研究機構)が提供しているWebAPIを使って設定したり、手打ちで日時を設定できます。

NICTのWebAPIを使って設定するときは、管理者権限でPowerShellを起動し、以下のコマンドを順に実行します。

PS> $UnixJST = [datetime]"1970/01/01 09:00:00"
PS> Set-Date $UnixJST.AddSeconds((Invoke-RestMethod -Uri https://ntp-a1.nict.go.jp/cgi-bin/json).st)

Windowsで日時やタイムゾーンの設定を変更する方法

手打ちで設定するときは、以下のようにコマンドを実行します。

PS> Set-Date -Date "2021/09/02 19:57"

Windowsで日時やタイムゾーンの設定を変更する方法

以上で変更完了です。