有时候,我们会发现无法连接windows的时间服务器或者内网的时间服务器本身的时间不准。
于是,可以通过如下python脚本示例,从公网任意服务器获取其服务器时间,这样更新的时间较为准确。
# -*- coding:utf-8 -*-
import datetime
import subprocess
import requests
import time
def set_system_time_from_server(url):
try:
response = requests.head(url, timeout=5)
server_time = response.headers.get('Date')
# 解析服务器时间(格林威治时间)
server_time = datetime.datetime.strptime(server_time, '%a, %d %b %Y %H:%M:%S %Z')
# 增加8小时,转换为北京时间
server_time = server_time + datetime.timedelta(hours=8)
server_time = server_time + datetime.timedelta(seconds=1)
# 格式化为适合设置系统时间的字符串格式
system_time_str = server_time.strftime('%Y-%m-%d %H:%M:%S')
# 分割日期和时间
date_str, time_str = system_time_str.split()
# 设置日期
subprocess.call(['cmd', '/c', 'date', date_str])
# 设置时间
subprocess.call(['cmd', '/c', 'time', time_str])
print(u"本地系统时间已更新为服务器时间。")
except Exception as e:
print(u"出现错误:", str(e))
# 替换下面的url变量为你要获取时间的网站
url = 'http://www.baidu.com/'
set_system_time_from_server(url)
for i in range(30):
print(u"感谢使用,本程序将在{}秒后自动关闭...".format(str(30-i)))
time.sleep(1)
将该脚本,利用pyinstaller 打包成exe工具,可以在任意windows电脑上执行。
而且进一步可以加入到windows系统自动定时任务中,定时更新系统时间。
标签:python,公网,server,windows,时间,str,time,服务器,datetime From: https://blog.51cto.com/u_16212784/6994242