WindowsやLinuxといった一般的なOSでは、インターネット上にあるNTPサーバー(時刻配信サーバー)に接続して自分自身の時刻を合わせる時刻同期機能があり、Windows 10もデフォルトでMicrosoftが提供するNTPサーバーに接続して時刻を合わせてくれています。
ですが、何らかの原因で正常に時刻が同期されず時刻のずれが大きくなると、インターネット上のサーバーに接続できなくなったり、更新プログラムをダウンロードできなくなったりと、さまざまな機能の動作に影響を及ぼします。
そこでここではWindows 10を例に、日時やタイムゾーンの設定を、Windowsの「設定」からやコマンド操作で変更する方法を紹介します。
目次
タイムゾーン設定を変更する
時刻が数時間単位でズレてしまっているときは「タイムゾーン」の設定を見直します。
タイムゾーンの設定をWindowsの「設定」から変更するときは「時刻と言語」を選択します。
「時刻と言語」画面が表示されるので「日付と時刻」で「タイムゾーンを自動的に設定する」をオフにしてから、日本国内であればタイムゾーンを「(UTC+09:00) 大阪、札幌、東京」に設定します。
コマンドで変更するときは
コマンド操作でタイムゾーンの設定を変更するときは、管理者権限でPowerShellを起動して、以下のコマンドを実行します。
PS> Get-TimeZone
日本国内の場合、タイムゾーンが「(UTC+9:00)大阪、札幌、東京」に設定されていればOKです。
タイムゾーンを正しく設定し直す場合は、以下のコマンドを実行します。
PS> Set-TimeZone -Id "Tokyo Standard Time"
上のコマンドでは、タイムゾーンを日本「Tokyo Standard Time」で指定していますが、日本以外のタイムゾーンを指定する場合は、以下のコマンドレットであらかじめ目的のタイムゾーンのIDを調べてから設定します。
PS> Get-TimeZone -ListAvailable
時刻の同期設定を変更する
時刻の同期設定をWindowsの「設定」から変更するときは「時刻と言語」を選択します。
「時刻と言語」画面が表示されるので「日付と時刻」で「時刻を自動的に設定する」をオンにすることで、NTPサーバー「time.windows.com」に接続して自動的に時刻を調整してくれます。(デフォルトでオンに設定されているはずです。)
時刻を今すぐNTPサーバーと同期したいときは「時刻を同期する」にある「今すぐ同期」をクリックすることで、時刻のズレを修正できます。
コマンドで変更するときは
時刻の同期設定をコマンドで変更するときは、管理者権限でPowerShellを起動し、以下のコマンドを実行して「Windows Time」サービスを起動します。
PS> Start-Service -Name W32Time
サービスを起動したら、サービスが起動していることを確認します。
PS> Get-Service -Name W32Time
「Status」欄が「Running」と表示されていればOKです。
次に、設定されているNTPサーバーと自動的に同期するよう設定します。
PS> w32tm /config /syncfromflags:ALL
次に、設定されているNTPサーバーと即時で同期します。
PS> w32tm /resync
コマンド実行後「コマンドは正しく完了しました。」と表示されればOKです。
つぎに、正常に同期されているかを確認します。
PS> w32tm /query /status
ソース欄で同期先のNTPサーバーを確認し、最終正常同期時刻が更新されていれば、問題なく時刻同期されています。
日時を手動で設定する
何らかの事情で、日時を手動で設定したいときは、以下の手順で設定できます。
「時刻と言語」の設定画面で「日付と時刻」の「時刻を自動的に設定する」をオフにします。
すると「日付と時刻を手動で設定」にある「変更」ボタンをクリックできるようになるので、クリックします。
「日付と時刻の変更」画面が表示されるので、日時を設定して「変更」をクリックします。
以上で変更完了です。
コマンドで設定するときは
コマンドで時刻の同期をオフにするときは、管理者権限でPowerShellを起動し、以下のコマンドを実行して「Windows Time」サービスを起動します。
PS> Start-Service -Name W32Time
サービスを起動したら、サービスが起動していることを確認します。
PS> Get-Service -Name W32Time
「Status」欄が「Running」と表示されていればOKです。
次に、時刻の自動同期をオフに設定します。
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)
手打ちで設定するときは、以下のようにコマンドを実行します。
PS> Set-Date -Date "2021/09/02 19:57"
以上で変更完了です。