You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Windows PC自动同步Ubuntu NTP服务器的时区并保持时间一致?

如何配置Windows PC自动同步Ubuntu NTP服务器的时区并保持时间一致?

嘿,我来帮你捋清楚这个问题~ 首先得明确一个关键:NTP服务本身只同步UTC时间,不会同步时区设置——这就是为什么你执行完同步命令后,两台设备的UTC时间其实是一致的,但显示的本地时间因为时区不同(纽约vs新加坡)看起来不一样。要让Windows自动匹配Ubuntu服务器的时区,得额外做些配置,下面分两种场景给你解决方案:

一、固定场景:手动设置并锁定时区(简单直接)

如果你的Ubuntu服务器时区不会经常变动,这个方法最省心:

  1. 先确认Ubuntu的时区是正确的:在Ubuntu终端执行 timedatectl,查看输出里的Time zone字段,确认是America/New_York。
  2. 调整Windows时区:
    • 打开Windows「设置」→「时间和语言」→「日期和时间」,关闭「自动设置时区」。
    • 在「时区」下拉菜单里选择「美国东部时间(纽约)」,这时Windows显示的本地时间就和Ubuntu完全一致了。
  3. (可选)锁定时区防止误改:
    • 按下Win+R输入 gpedit.msc 打开组策略编辑器。
    • 依次导航到「计算机配置」→「管理模板」→「系统」→「区域和语言选项」,找到「允许时区更改」。
    • 把它设置为「已禁用」,这样就没人能随便改Windows的时区了。

二、动态场景:用脚本自动同步时区(适合时区可能变动的情况)

Windows没有原生的自动从NTP服务器同步时区的功能,所以我们可以用脚本实现:

  1. 在Ubuntu上准备一个获取时区的脚本:
    • 创建一个名为get_timezone.sh的文件,内容如下:
      #!/bin/bash
      timedatectl show -p Timezone --value
      
    • 给脚本赋予执行权限:chmod +x get_timezone.sh
  2. 在Windows上写PowerShell脚本同步时区:
    • 新建一个.ps1文件,内容如下(记得替换Ubuntu的用户名、IP和脚本路径):
      # 通过SSH获取Ubuntu的时区(需要提前配置Windows到Ubuntu的免密登录)
      $ubuntuTimezone = ssh your_ubuntu_username@10.221.24.85 "/home/your_ubuntu_username/get_timezone.sh"
      
      # 把Ubuntu的时区名称映射为Windows对应的时区ID
      $windowsTimezoneId = switch($ubuntuTimezone) {
          "America/New_York" { "Eastern Standard Time" }
          # 可以根据需要添加更多时区映射,比如新加坡时区对应"Singapore Standard Time"
      }
      
      # 如果匹配到对应时区,就设置并重新同步时间
      if($windowsTimezoneId) {
          Set-TimeZone -Id $windowsTimezoneId
          w32tm /resync
      }
      
  3. 设置Windows定时任务:
    • 打开「任务计划程序」,创建一个新任务,设置触发时间(比如每天一次),执行这个PowerShell脚本,这样就能自动同步时区了。

另外补充一句:如果你的核心需求只是让两台设备的UTC时间一致,其实不需要改时区——毕竟NTP已经帮你同步了UTC时间,只是显示的本地时间因时区不同有差异而已。但如果必须让显示的时间完全一模一样,上面的方法就完全适用啦。

备注:内容来源于stack exchange,提问作者gd1925

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:43:05