python 快速修改日期,带恢复功能,已打包exe
本帖最后由 wkdxz 于 2022-9-7 17:38 编辑因工作需要,会经常用到日期修改功能,把日期往前或往后调几天。
最近在学PySimpleGUI,所以做了个小工具来实现日期修改和恢复功能。
点击修改按钮:后弹出日期选择框,选择了日期后,电脑日期会被改为选择的日期。同时,会关闭自动设置时间的开关。
点恢复按钮:会获取网络时间,并将电脑日期和时间设置为网络时间。同时,会打开自动设置时间的开关。
如果你的电脑时间日期会错乱,比如BIOS掉电,日期显示错误时,可以直接点恢复按钮,修复电脑的时间和日期,与网络时间有一丢丢延时,普通用户可以忽略。
日期工具成品.exehttps://www.aliyundrive.com/s/VCeRqVdUx4h 提取码: iw54
源码下载:
pip install PySimpleGUI#第三方库
源码:为了省事,代码内直接使用了cmd命令来操作注册表和修改时间日期,没有使用三方库
from datetime import datetime
from urllib.request import urlopen
import PySimpleGUI as sg
import os, ssl, time
ssl._create_default_https_context = ssl._create_unverified_context
def gmtstr_to_localtime(gmtstr) -> datetime:
return datetime.strptime(gmtstr, "%a, %d %b %Y %H:%M:%S GMT")
def datetime_from_utc_to_local(utc_datetime):
now_timestamp = time.time()
offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(
now_timestamp)
return utc_datetime + offset
def get_network_time():
url = "https://www.baidu.com"#随便一个可用的网址都可以
try:
with urlopen(url) as res:
utctime = gmtstr_to_localtime(res.getheader("Date"))
return datetime_from_utc_to_local(utctime)
except Exception as e:
print(f"联网失败:{str(e)}")
def reg_sync(sync=True):#通过注册表空值“自动设置时间”的开关
key = 'NTP' if sync else 'NoSync'
cmd = f'reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\Parameters /v type /t reg_sz /d {key} /f'
os.system(cmd)
def change_date(date_time):
reg_sync(False)#禁止时间自动同步
DATE = date_time.split()
os.system(f'echo {DATE}|date')
def recover_date():#恢复正确时间,通过网络时间设置
reg_sync(True)
now = str(get_network_time())
DATE, TIME = now.split()
os.system(f'echo {TIME}|time')
os.system(f'echo {DATE}|date')
def gui():
layout = [[
sg.CalendarButton('点击修改日期', key='修改', enable_events=True),
], ]
window = sg.Window('日期工具', layout, font=('微软雅黑', 12))
while True:
event, values = window.read()
if not event:
break
if event == '修改':
change_date(values['修改'])
break
elif event == '恢复':
recover_date()
break
window.close()
if __name__ == '__main__':
gui() rhci 发表于 2022-9-7 17:39
这个可以有,就是需要网络。还是手机比对的
嗯,恢复需要网络支持,网络获取省事点。 这个可以有,就是需要网络。还是手机比对的 感谢楼主,顶上! 这个不错,界面挺好,我也想学学,tkinter太麻烦了 学习。。。。。。 这个还可以,老的主板经常掉电,系统时间对不上 就是一键脚本,打包成exe? 看看,学习下代码
页:
[1]