使用Python实现Win7开机自动同步Internet时间

'''
先说方法:

  1.写一个批处理TIMESYN.BAT,内容:python E:\Time\time.py

  2.创建一个vbs脚本,内容:CreateObject("WScript.Shell").Run "cmd /c E:\Time\TIMESYN.bat",0

  //上面E:\Time\TIMESYN.bat为第一步批处理文件的路径

  3.win+R,gpedit.msc,在计算机配置或者用户配置中的windows设置中的启动\登录中添加第二步创建的脚本

解释:

1.time.py是用来设置时间同步服务器的程序;

2.创建脚本,运行不显示回显框

3.开机运行

PS:当然也可以直接添加shell脚本bat文件 不过这样做会在开机的时候出现一个黑框...囧
PPS:这个东西是由于我电脑CMOS电池没电了.....每次开机时间都是2008/01/01 12:00  懒得换电池- -!
'''
#之前用的w32tm的方法不好用...主要由于时间相差太大windows拒绝更新时间
#下面是python代码实现系统时间更新
#-*- coding:utf-8 -*-

import socket
import struct
import time
import win32api

TimeServer = 'time.nist.gov' #时间更新服务器
Port = 123

def getTime():
TIME_1970 = 2208988800L
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = '\x1b' + 47 * '\0'
client.sendto(data, (TimeServer, Port))
data, address = client.recvfrom(1024)
data_result = struct.unpack('!12I', data)[10]
data_result -= TIME_1970
return data_result

def setSystemTime():
tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst = time.gmtime(getTime())
win32api.SetSystemTime(tm_year, tm_mon, tm_wday, tm_mday, tm_hour, tm_min, tm_sec, 0)
print "Set System OK!"

if __name__ == '__main__':
setSystemTime()
print "%d-%d-%d %d:%d:%d" % time.localtime(getTime())[:6]



你可能感兴趣的:(internet)