找回密码
 请使用中文注册
查看: 8|回复: 0

电脑一开机时间老是变初始日期甚至有时要按F1,时间如何自动同步到最新

[复制链接]
阅读字号:

1431

主题

55

回帖

2万

积分

超级版主

积分
28941
发表于 2 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
开机时间总回初始,咋回事?
  电脑一开机,时间就变回初始日期,不显示最新时间,如果每次都得手动调整 ,真的很麻烦!
  那么,电脑开机时间为何会变回初始日期呢?最常见的就是主板的纽扣电池没电了,当电脑断电后,纽扣电池负责维持电脑的时间和一些基本设置。
  另外,系统时间服务被禁用也会引发时间对不上。在 Windows 系统中,有一个专门负责时间同步的服务 ——Windows Time 服务。如果这个服务被禁用,电脑就无法自动从互联网上获取准确的时间 ,时间自然就对不上啦,当然了,这种情况通常是时间慢了几小时或几天甚至几个月,而不是变回初始日期。
  对于这种情况,换个纽扣电池就可以了。
让时间自动同步,轻松搞定
  然而,主板的纽扣电池未必好更换,比如,用户不懂,也不会操作;笔记本电脑和一体机电脑需要拆开,电池更换不方便,甚至电池规格属于定制的,比较难找难换;教学的一体机白板体积大,换电池不方便等
  需要让电脑时间自动同步到最新 ,再也不用手动调整时间的方法,在Windows系统的操作如下:
  对于 Windows 系统,不同版本的设置方法稍有不同。如果你用的是 Windows 10 或者 Windows 11,那就很简单啦 。点击屏幕左下角的 Windows 图标,再点击设置图标(就是那个齿轮形状的) ,打开设置窗口。在设置窗口里,找到 “时间和语言” 选项,点击进入 (另一个方法就是任务栏的时间上右键点击,选择“调整日期/时间)。在 “日期和时间” 这一栏,把 “自动设置时间” 和 “自动设置时区” 这两个开关都打开 。这样,只要你的电脑联网,时间就会自动同步啦 。要是你想手动同步时间,也可以在这个页面点击 “立即同步” 按钮 。

7e77bf42b728db00cb37da5f52f39d4f.png
  要是你还在使用经典的 Windows 7 系统,操作也不难。按下键盘上的 Win+R 键,打开运行对话框,输入 “control”,然后回车(另一个方式:点击左下角的开始菜单,选择弹出菜单里的”控制面板“ ,或者任务栏的时间上右键点击,选择“调整日期/时间),打开控制面板。在控制面板里,找到 “时钟、语言和区域” 选项,点击进入 。接着,点击 “日期和时间”,在弹出的窗口中,切换到 “Internet 时间” 选项卡 ,勾选 “与 Internet 时间服务器同步”,再点击 “更改设置” 按钮 。在新弹出的窗口里,你可以选择一个时间服务器,比如 “time.windows.com”,这是微软官方的时间服务器,很稳定 。选好后,点击 “立即更新” 按钮,时间就会马上同步 。最后,点击 “确定” 保存设置就行啦 。
  检查系统时间服务有没有被禁用。按下键盘上的 Win+R 键,打开运行对话框,输入 “services.msc”,然后回车 。在弹出的服务窗口中,找到 “Windows Time” 服务,看看它的状态是不是 “已停止”,启动类型是不是 “禁用” 。如果是,那就右键点击它,选择 “属性”,把启动类型改成 “自动”,然后点击 “启动” 按钮,让这个服务重新运行起来 ,最后点击 “确定” 保存设置。
  这种方式,需要时间同步服务开机就运行才行,对于Windows7系统,一般时间同步服务是隔一段时间定时运行一下,所以开机后时间未必是正确的最新时间。经过测试,时间不正确,Windows10系统会开机运行时间同步一次
网络稳定也很重要,它是时间同步的基础。在同步时间的时候,一定要确保你的电脑网络连接正常、稳定 。
Windows7系统同步小技巧,更稳更准
  时间不正确下,因为Windows7系统未必是开机就运行一次时间同步,所以需要解决自动同步的问题,假如Windows10、11系统开机没有运行时间同步,就需要想办法让时间自动同步,毕竟手动操作繁琐了点儿。
  自动运行,当然是程序可以实现啦,下方就是一段Python版的时间同步程序

原理是获取授时中心的网络时间,将网络时间设置为系统时间


import ntplibfrom time import ctimeimport win32apiimport pythoncomimport os

def synchronize_time():    ntp_servers = [        'time1.aliyun.com',  # 阿里云时间服务器        'time.nist.gov',    # 美国国家标准与技术研究院时间服务器        'time-a.nist.gov',  # 美国备用时间服务器        'ntp1.aliyun.com',  # 阿里云另一个时间服务器        'cn.ntp.org.cn',    # 中国的公共NTP服务器        'time.google.com'   # 谷歌时间服务器    ]#知名的时间服务器 。比如,国内的 “[ntp.sjtu.edu.cn](https://ntp.sjtu.edu.cn)”(上海交通大学的 NTP 服务器)、“[ntp.ntsc.ac.cn](https://ntp.ntsc.ac.cn)”(中国科学院国家授时中心的服务器) ,国外的 “[time.nist.gov](http://time.nist.gov)”(美国国家标准与技术研究院的时间服务器)等
    for server in ntp_servers:        ntp_client = ntplib.NTPClient()        try:            ntp_client.connect(server)            ntp_time = ntp_client.request(server).tx_time            ntp_client.close()
            # 格式化获取到的时间            formatted_time = ctime(ntp_time)
            # 记录时间到log.txt文件            log_path = os.path.join(os.getcwd(), 'log.txt')            with open(log_path, 'a', encoding='utf-8') as log_file:                log_file.write(f"通过 {server} 获取到的网络时间: {formatted_time}\n")
            pythoncom.CoInitialize()            # 设置系统时间            win32api.SetSystemTime(*ctime(ntp_time)[11:19].split(':') + ctime(ntp_time)[8:10].split(' ')[:2] + ctime(ntp_time)[20:].split(' ')[:2])            pythoncom.CoUninitialize()
            print(f"通过 {server} 时间同步成功!")            return        except ntplib.NTPException as e:            print(f"连接 {server} 失败: {e}")            # 记录失败信息到log.txt文件            log_path = os.path.join(os.getcwd(), 'log.txt')            with open(log_path, 'a', encoding='utf-8') as log_file:                log_file.write(f"连接 {server} 失败: {e}\n")
    print("尝试所有服务器后,时间同步均失败。")    # 记录最终失败信息到log.txt文件    log_path = os.path.join(os.getcwd(), 'log.txt')    with open(log_path, 'a', encoding='utf-8') as log_file:        log_file.write("尝试所有服务器后,时间同步均失败。\n")

if __name__ == "__main__":    synchronize_time()


当然了,Python虽说是热门的编程语言,但电脑需要安装并配置开发环境才行,这一步就难倒了大部分人,没有Python的编程环境,Python程序是无法运行,所以需要换成电脑自带的编程语言,有cmd命令行,VBScript,如此一来,程序可以免配置编程环境,直接拿来就用

  cmd命令行是交互式,bat文件运行会有黑色窗口,有些操作不太好实现,而且不了解的人可能会忽略,可能以为电脑出现异常

经过查找考虑,VBScript基本上可以实现开机自启设置与检测,快捷方式添加,定时弹窗Popup显示消息并自动退出等

  下方代码保存为“.vbs”后缀名的文件,名称自己取,比如“时间同步”,“time_sync”,合起来就是:time_sync.vbs  (在桌面或D盘E盘里面,空白处右键点击,选择新建文本文档,打开文档,将代码复制粘贴到文本文档里并保存,修改文档名称以及后缀名)

Set shell = CreateObject("WScript.Shell")
shell.Popup "程序启动",3Set service = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Service")
Dim isRunningisRunning = False
For Each s In service    If s.Name = "W32Time" Then        If s.State = "Running" Then            isRunning = True            Exit For        End If    End IfNext
If Not isRunning Then    '设置服务为自动启动    shell.Run "sc config w32time start= auto", 0, True    '启动服务    shell.Run "net start w32time", 0, True    shell.Popup "W32Time 服务已配置并启动。", 5, "提示"Else    shell.Popup "W32Time 服务正在运行。", 5, "提示"End If

' 检查是否开机自启Function IsStartup()    Dim startupPath, scriptPath    startupPath = shell.SpecialFolders("Startup") & "\time_sync.vbs"    scriptPath = WScript.ScriptFullName    IsStartup = (scriptPath = startupPath)        shell.Popup “开机自启检测”,3,“isStartup”End Function
' 设置开机自启Sub SetStartup()    Dim startupPath, scriptPath    startupPath = shell.SpecialFolders("Startup") & "\time_sync.vbs"    scriptPath = WScript.ScriptFullName    Set fso = CreateObject("Scripting.FileSystemObject")    fso.CopyFile scriptPath, startupPath        shell.Popup “设置开机自启”,3,“SetStartup”End Sub
' 添加桌面快捷方式Sub CreateDesktopShortcut()    Dim desktopPath, lnkPath, shortcut    desktopPath = shell.SpecialFolders("Desktop")    lnkPath = desktopPath & "\时间同步.vbs.lnk"    Set shortcut = shell.CreateShortcut(lnkPath)    shortcut.TargetPath = WScript.ScriptFullName    shortcut.Save        shell.Popup “已添加桌面快捷方式:时间同步.vbs.lnk”,3,“时间同步.vbs.lnk”End Sub
' 时间同步函数net start w32time,sc config w32time start= auto'-2147023834:发生下列错误: 服务尚未启动。 (0x80070426)' 时间同步函数Sub SyncTime()    On Error Resume Next    returnCode = shell.Run("w32tm /resync", 0, True)    'shell.Popup returnCode, 30    Select Case returnCode        Case 0            shell.Popup "时间同步已运行,请核对。", 5, "w32tm /resync"        Case -2147023834            shell.Popup "发生错误: 时间同步服务尚未启动,日期与时间里需要勾选自动同步选项", 5, "w32tm /resync"        Case Else            shell.Popup "时间同步失败", 5, "w32tm /resync"    End Select    On Error Goto 0End Sub' 主程序逻辑If Not IsStartup() Then    SetStartup()    CreateDesktopShortcut()End If

SyncTime()
' 释放对象Set shell = Nothing
  




您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-8-18 12:39 , Processed in 0.283935 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表