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

Python编写重置系统日期时间为实时标准时间脚本的问题求助

问题核心原因

你实现失效的核心逻辑错误是:修改本地系统时间后,time.gmtime()等所有本地时间读取接口返回的都是被篡改后的错误时间,没有外部时间源的前提下不可能拿到真实的实时时间。

可行解决方案

方案1:公网环境通过NTP服务器获取真实时间(最常用)

不需要修改你之前复用的系统时间设置逻辑,只需要替换时间元组的生成逻辑即可:

  1. 先安装NTP协议依赖库:
    pip install ntplib
  2. 完整重置脚本示例:
import ntplib
from datetime import datetime, timezone

# 此处直接粘贴你之前使用的Amir脚本中的系统时间设置函数即可,无需任何修改
def set_system_time(time_tuple):
    # 原有设置系统时间的逻辑保持不变
    pass

# 调用公共NTP服务器获取真实UTC时间,此处用国内访问稳定的阿里云NTP节点
ntp_client = ntplib.NTPClient()
resp = ntp_client.request('ntp.aliyun.com', version=3)
real_utc_time = datetime.fromtimestamp(resp.tx_time, timezone.utc)

# 转换为和原脚本格式完全匹配的7位时间元组
time_tuple = (
    real_utc_time.year,
    real_utc_time.month,
    real_utc_time.day,
    real_utc_time.hour,
    real_utc_time.minute,
    real_utc_time.second,
    int(real_utc_time.microsecond / 1000)
)

# 调用原方法设置时间即可完成重置
set_system_time(time_tuple)

方案2:无公网环境本地缓存原始时间

如果运行脚本的设备无法联网,可以在执行修改系统时间的脚本前先缓存原始真实时间,重置时直接读取缓存即可:

  1. 修改你原来的改时间脚本,开头新增一行缓存逻辑:
import time
import pickle
# 改时间前先把真实时间存入本地文件
with open('original_time_cache.pkl', 'wb') as f:
    cur_time = time.gmtime()
    cache_tuple = (cur_time[0], cur_time[1], cur_time[2], cur_time[3], cur_time[4], cur_time[5], int(time.time()*1000%1000))
    pickle.dump(cache_tuple, f)

# 后面保持你原来修改系统时间的逻辑不变
  1. 重置脚本直接读取缓存:
import pickle

# 同样直接复用原有set_system_time函数即可
def set_system_time(time_tuple):
    pass

with open('original_time_cache.pkl', 'rb') as f:
    time_tuple = pickle.load(f)
set_system_time(time_tuple)

注意事项

  • 所有修改系统时间的脚本都需要高权限运行:Windows系统右键选择「以管理员身份运行」,Linux/macOS系统需要加sudo前缀执行。

内容的提问来源于stack exchange,提问作者arara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:45:03