公司的电脑比较老旧,主板上的电池也没电了,每天都得手动调时间,自动同步也因为日期每天都被重置了而无法同步ntp服务器,想拆开换电池发现机箱也打开不了,emmm...=。=
无奈之下,自己做一个同步时间的脚本吧,然后用bat运行,加入开机启动项每天开机自动同步下时间就可以了
updateTime.py
因为不清楚NTP服务器的相关协议,网上找到的NTP服务器地址也不会使用,只好用比较笨的办法,找到一个能够提供当前时间的网站,爬下来,提取出时间的信息,再修改系统的时间
我用的是这个网站提供的时间http://time.tianqi.com/,python代码如下:
import os
import urllib.request
import re
### ====================处理编码问题====================
#import sys
#import io
#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
### ====================处理编码问题====================
url = "http://time.tianqi.com/"
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')]
def getInformation(url):
wp = opener.open( url )
ch = wp.read().decode('utf-8')
return ch
def getMonth(str):
return {
"Jan":1,
"Feb":2,
"Mar":3,
"Apr":4,
"May":5,
"Jun":6,
"Jul":7,
"Aug":8,
"Sep":9,
"Oct":10,
"Nov":11,
"Dec":12,
}.get(str,"error")
def setTime():
ch = get_getInformation( url );
timeStr = re.search(r'<p id="times">.*</p>', ch).group()
timeStr = re.search(r'>.*<', timeStr).group()
numPattern = re.compile(r'\d+') # 查找数字
StrPattern = re.compile(r'\S+') # 查找字符串
result = numPattern.findall(timeStr)
print(timeStr)
hour = result[2]
minute = result[3]
second = result[4]
year = result[1]
month = getMonth(StrPattern.findall(timeStr)[2])
date = result[0]
os.system("date %d-%d-%d" % ( int(year) , int(month) , int(date)) )
os.system("time %d:%d:%d.0" % ( int(hour) , int(minute) ,int(second)) )
if __name__ == '__main__':
print("--------------------begin update time--------------------")
setTime()
print("--------------------update time success--------------------")
updateTime.bat
创建updateTime.bat,运行就可以直接更新时间
@echo off
python updateTime.py
# pause
设置为开机启动项
不同系统有不同的设置方式,这里就不详细展开了,把updateTime.bat加到开机启动项就可以了