我的电脑出现严重问题。我根本无法将Windows 10正在运行的计算机上的时钟同步到互联网。当我转到“日期和时间设置”并关闭“自动设置时间”然后再打开时,它加载的时间非常长,或者立即显示错误的时间。我在互联网上搜索了很长时间,但是似乎没有任何效果。即使我完全恢复了Windows,它仍然无法正常工作。真正奇怪的是,时钟有时甚至会倒退!
可能是我的主板有问题吗?
我的电脑出现严重问题。我根本无法将Windows 10正在运行的计算机上的时钟同步到互联网。当我转到“日期和时间设置”并关闭“自动设置时间”然后再打开时,它加载的时间非常长,或者立即显示错误的时间。我在互联网上搜索了很长时间,但是似乎没有任何效果。即使我完全恢复了Windows,它仍然无法正常工作。真正奇怪的是,时钟有时甚至会倒退!
可能是我的主板有问题吗?
Answers:
首先,这是Windows已有十多年的历史了!这不是什么新鲜事!只要我记得,Windows一直无法在NTP服务器上同步系统时间。
如果必须使用Internet来获取准确的系统时间,请使用American NIST的NTP服务器之一。不要使用Microsoft NTP服务器!它永远都行不通!它从来没有为我个人使用过,也从未为WWW上的许多人提供过服务,这些人发布了与您刚才在此处发布的问题类似的问题。但是,使用NIST的NTP服务器一直对我有用,它也对其他人也有用,如果您阅读了十年的网络论坛讨论,就得到了很多积极的结果。
我不知道哪个服务器效果最好(NIST有其中几个)。但是您可以轻松地找到原因,因为至少从Windows XP开始,其中一个的地址就作为Windows中的可选预设出现。这是他们应该默认使用的服务器,但是他们选择了自己的NTP服务器,该服务器永远无法工作。其他地址可以在NIST网站上找到。
Name IP Address
time-a.nist.gov 129.6.15.28
time-b.nist.gov 129.6.15.29
time-c.nist.gov 129.6.15.30
time-d.nist.gov 2610:20:6F15:15::27
您可以在此处找到更完整的列表:http : //tf.nist.gov/tf-cgi/servers.cgi
使您的问题脱颖而出的唯一因素是您使用的是Windows10。这与十年前其他人发布的类似问题唯一不同。但是核心问题仍然是相同的。仅仅是在Windows 10中,一些细粒度的控件就从用户手中夺走了。因此,用户不再可以选择要使用的NTP服务器,也不能输入用户希望使用的任何服务器的地址。这些选项仍然可用,但是它们是隐藏的,您需要知道如何找到它们。
如果您是高级用户,并且不想对系统进行精细控制,则不想在Windows 10中使用“设置”应用程序。我可以在这里确认您的描述。如果您使用“设置”应用,然后关闭然后重新打开“自动设置时间”,由于指示符动画一直在旋转,它似乎卡住了。因此请不要使用它,因为它默认使用Microsoft的NTP服务器,该服务器永远无法运行,并且您无法在“设置”应用程序的该页面上选择其他NTP服务器。
在Windows 10中,基本上有两种方法可以自动调整系统时间。有“设置”应用程序和经典的Windows对话框。您要使用后者,然后选择NIST NTP服务器。
使用Windows 10设置应用
使用Windows日期和时间对话框
time.nist.gov
从下拉列表中选择作为地址,或使用上面列出的服务器之一。time.nist.gov
单独使用该地址,它将解析为任何一台NIST NTP服务器,以最佳方式为准。一些国家拥有自己的原子钟和NTP服务器。但老实说,在Internet上进行时间同步时,它始终可以与NIST NTP服务器一起使用。
没有其他解决方案对我有用。
如果它们也不适合您,请考虑以管理员权限运行此脚本,作为任务计划程序上的日常任务:
在要点上:https : //gist.github.com/aivrit/fdfee71e969ba62670ed0b87c26f3aad
或在这里:
$time = Invoke-RestMethod -Uri http://worldtimeapi.org/api/ip
$timezones = Get-TimeZone -ListAvailable
# there is no global standard in names of timezones nor a unique id of them
# worldtimeapi always has city name in last part of timezone field
# microsoft has city names in display name
# therefore current solution is to match those names based on city
foreach ($timezone in $timezones) {
if ($timezone.DisplayName.ToString() -match $time.timezone.Split("/")[-1]) {
$current_zone = $timezone
break
}
}
if (!$current_zone) {throw "Could'nt find time zone. exiting."}
Set-TimeZone -Name $current_zone.StandardName
Set-Date -Date (Get-Date -Date $time.datetime)