Windows 10の時刻とタイムゾーンをコマンドで設定する方法

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

ワークグループ環境のWindows 10で時刻設定を行う場合、Windowsの「設定」画面で行う方法が一般的ですが、たくさんのパソコンで同じ設定を行うようなケースでは、1台ずつポチポチ設定するのは骨が折れます。

そこでここでは、Windows 10の時刻とタイムゾーンをコマンドで設定する方法を紹介します。

Windows 10で時刻のずれやタイムゾーンを調整する方法
ここでは、Windows 10でタイムゾーンや時刻のずれを調整する方法を紹介します。

動作環境

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

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

タイムゾーンを設定する

Windows環境でタイムゾーンが正しく設定されていないと、時刻が数時間単位でずれてしまうことがあるため、まずはタイムゾーンを確認します。

手順は、管理者権限でPowerShellを起動して、以下のコマンドを実行します。

PS> Get-TimeZone

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

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

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

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

PS> Get-TimeZone -ListAvailable

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

時刻同期を設定する

つぎに、時刻同期の設定を行います。

Windows 10では、デフォルトでNTPサーバー「time.windows.com」と時刻同期されており、同期は1週間に1回行われています。

デフォルト設定のままでも問題ない場合が多いですが、より正確に時刻同期させたいときは、接続するNTPサーバーを国内で提供されているNTPサーバー(ここでは「ntp.nict.jp」を使用します)に変更して、動作モードを変更するのがおススメです。

手順は、次のとおりです。

管理者権限でPowerShellを起動し、はじめに以下のコマンドを実行して「Windows Time」サービスを自動起動するよう設定します。

PS> Set-Service -Name W32Time -StartupType Automatic

つぎに「Windows Time」サービスを起動します。

PS> Start-Service -Name W32Time

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

PS> Get-Service -Name W32Time

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

つぎに、時刻同期先と動作モードを指定します。

PS> w32tm /config /update /manualpeerlist:"ntp.nict.jp,0x8" /syncfromflags:MANUAL

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

つぎに、上で設定したNTPサーバーと即時で同期します。

PS> w32tm /resync

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

最後に、問題なく同期されているかを確認します。

PS> w32tm /query /status

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

時刻を手動で設定する

何らかの事情で、時刻を手動で設定したいときは、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 10の時刻とタイムゾーンをコマンドで設定する方法

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

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

Windows 10の時刻とタイムゾーンをコマンドで設定する方法

あとがき

なお、会社などのドメイン環境下のWindowsマシンでは、時刻同期の動作がワークグループ環境のWindowsマシンと異なるため、ここで紹介した方法で時刻同期設定を勝手に変更してはいけません。