WindowsやLinuxといった一般的なOSでは、インターネット上にあるNTPサーバー(時刻配信サーバー)に接続して自分自身の時刻を合わせる時刻同期機能があり、Windows 10もデフォルトでMicrosoftが提供するNTPサーバーに接続して時刻を合わせてくれています。
ですが、何らかの原因で正常に時刻同期されず時刻のずれが大きくなると、インターネット上のサーバーに接続できなくなったり、更新プログラムをダウンロードできなくなったりと、さまざまな機能の動作に影響を及ぼします。
そこでここでは、Windows 10で時刻同期やタイムゾーンの設定を、Windowsの「設定」からやコマンドで変更する方法を紹介します。
目次
動作環境
この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。
ソフトウェア | バージョン |
---|---|
Windows 10 Pro 64bit | 21H1 |
Windowsの「設定」から設定する場合
時刻同期やタイムゾーンなどの設定をWindowsの「設定」から行う場合の手順は、次のとおりです。
タイムゾーンを設定する
時刻が数時間単位でズレてしまっているときは「タイムゾーン」の設定します。
まず、Windowsの「設定」アプリから「時刻と言語」を選択します。
「時刻と言語」画面が表示されるので「日付と時刻」で「タイムゾーンを自動的に設定する」をオフにしてから、日本国内であればタイムゾーンを「(UTC+09:00) 大阪、札幌、東京」に設定します。
時刻同期を設定する
Windows 10では、「日付と時刻」の「時刻を自動的に設定する」がオンにすることで、NTPサーバー「time.windows.com」に接続して自動的に時刻を調整してくれます。(デフォルトでオンに設定されているはずです。)
時刻を今すぐNTPサーバーと同期したいときは「時刻を同期する」にある「今すぐ同期」をクリックすることで、時刻のズレを調整できます。
NTPサーバーを変更する
Windows 10では、デフォルトで接続するNTPサーバーが「time.windows.com」に設定されていますが、「time.windows.com」は、Microsoftが提供しているNTPサーバーで日本国外にあるため、環境によっては接続が安定しないことがあります。
そのような時は、接続先のNTPサーバーを日本国内で提供されているNTPサーバーなどに変更することで、改善する場合があります。
NTPサーバーを変更する手順は、次のとおりです。
スタートメニューのプログラム一覧などから「コントロールパネル」を起動します。
「コントロールパネル」が開いたら「時計と地域」をクリックします。
「時刻と地域」画面が表示されたら「日付と時刻の設定」をクリックします。
「日付と時刻」画面が開くので「インターネット時刻」タブを選択し「設定の変更」をクリックします。
「インターネット時刻設定」画面が開くので「サーバー」欄にNTPサーバーのアドレスを入力し「今すぐ更新」をクリックします。
日本国内で提供されているNTPサーバーはいくつかありますが、よく利用されるのは「独立行政法人 情報通信研究機構」が公開しているNTPサーバー「ntp.nict.jp」です。
画面下に「時刻は正常に2021/XX/XX XX:XXにntp.nict.jpと同期しました。」と表示されれば、正常に同期できています。
何らかのエラーが表示された場合は、もう一度「今すぐ更新」をクリックすることで、同期できることがあります。
最後に「OK」をクリックすれば、NPTサーバーの変更完了です。
時刻を手動で設定する
何らかの事情で、時刻を手動で設定したいときは、以下の手順で設定できます。
「時刻と言語」の設定画面で「日付と時刻」の「時刻を自動的に設定する」をオフにします。
すると「日付と時刻を手動で設定」にある「変更」ボタンをクリックできるようになるので、クリックします。
「日付と時刻の変更」画面が表示されるので、日時を設定して「変更」をクリックします。
以上で、時刻を手動で設定できます。
なお、特別な事情で現在日時以外に設定する場合を除き、時刻を手動設定したあとは「時刻を自動的に設定」の設定を「オン」に戻しておきましょう。
コマンドで設定する場合
時刻同期やタイムゾーンなどの設定をコマンドを使って設定する場合の手順は、次のとおりです。
タイムゾーンを設定する
タイムゾーンを設定するときは、管理者権限でPowerShellを起動して、以下のコマンドを実行します。
PS> Get-TimeZone
日本国内の場合、タイムゾーンが「(UTC+9:00)大阪、札幌、東京」に設定されていればOKです。
タイムゾーンを正しく設定し直す場合は、以下のコマンドを実行します。
PS> Set-TimeZone -Id "Tokyo Standard Time"
上のコマンドでは、タイムゾーンを日本「Tokyo Standard Time」で指定していますが、日本以外のタイムゾーンを指定する場合は、以下のコマンドレットであらかじめ目的のタイムゾーンのIDを調べてから設定します。
PS> Get-TimeZone -ListAvailable
時刻同期を設定する
ここでは、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です。
つぎに、時刻同期先と動作モードを指定します。
PS> w32tm /config /update /manualpeerlist:"ntp.nict.jp,0x8" /syncfromflags:MANUAL
コマンド実行後「コマンドは正しく完了しました。」と表示されればOKです。
つぎに、上で設定したNTPサーバーと即時で同期します。
PS> w32tm /resync
コマンド実行後「コマンドは正しく完了しました。」と表示されればOKです。
最後に、問題なく同期されているかを確認します。
PS> w32tm /query /status
ソース欄で同期先のNTPサーバーを確認し、最終正常同期時刻が更新されていれば、問題なく時刻同期されています。
時刻を手動で設定する
何らかの事情で、時刻を手動で設定したいときは、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"
あとがき
なお、ここで紹介している方法は、自宅などで利用するワークグループ環境のWindowsマシンを対象としています。
企業などでドメイン環境下にあるWindowsマシンは、時刻同期方法がワークグループ環境のWindowsマシンと異なるため、ここで紹介した方法で時刻同期設定を勝手に変更してはいけません。