Python 重置日期和时间的脚本

Python script to reset date and time

前段时间出现this post询问如何使用Python更改系统日期和时间。 Amir 对 post 的回答对我有用,我可以使用他的相同脚本将屏幕右下角显示的计算机日期和时间更改为我想要的任何日期和时间。但是,我现在正在尝试创建第二个稍微修改过的脚本,以 日期和时间实时重置为应有的状态。所以我的想法是,我可以执行一个脚本,然后更改我的系统日期和时间。然后,我执行第二个脚本并将系统日期和时间实时重置为“应该的”,就像我 运行 第一个脚本之前一样。到目前为止,我还没有弄明白。在Amir的脚本中,使用了如下代码;

time_tuple = (2012,  # Year
              9,  # Month
              6,  # Day
              0,  # Hour
              38,  # Minute
              0,  # Second
              0,  # Millisecond
              )

我认为我可以通过简单地进行以下修改来完成这项工作;

import time
time_tuple = time.gmtime()[0:7]

假设有一个元组,其中包含当前的真实时间。我使用 [0:7] 来匹配原始元组中的七个值。但是当我 运行 此代码时,它不会将我的计算机系统日期和时间重置为实时。 (当我删除 [0:7] 时没有帮助。)有谁知道可以在这里使用的东西吗?

更改系统时间后,您的计算机只知道新时间。它不会“记住”原始时间,所以这就是 time.gmtime() 还返回新时间的原因。

要让您的计算机再次了解真实世界的时间,输入必须来自您计算机之外的某个地方。您可以手动输入当前时间,也可以编写脚本来调用某个时间 API 服务。我通过搜索 "time api".

找到了几个免费的

非常感谢@Greg Hewgill 提供的信息。如果有人感兴趣,我可以使用以下方法解决上面的问题。我从 http://worldtimeapi.org/ 获得了 API 信息。我构建的元组代码是;

import requests
timeapi = requests.get("http://worldtimeapi.org/api/timezone/Etc/GMT")
tuple_info = timeapi.json()['datetime']
year = int(tuple_info[0:4])
month = int(tuple_info[5:7])
day = int(tuple_info[8:10])
hour = int(tuple_info[11:13])
minute = int(tuple_info[14:16])
second= int(tuple_info[17:19])
millisecond = 0
api_tuple = (year,month,day,hour,minute,second,millisecond)