pythonスクリプトによるシステム時間の設定の2つの方法

2295 ワード

本稿では、pythonスクリプトによるシステム時間の設定方法について説明します.
1つ目の方法は、Pythonを使用してシステム時間を設定すること、すなわちシステムに時間を補正することです.

#           ,       ,     

# windows  ,      ,    ,      .

#        ,     , windows       . 
#-*- coding:utf-8 -*- 
 
import socket 
import struct 
import time 
import win32api 
 
TimeServer = '210.72.145.44' #      ip 
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] 


速度が速いので、Pyファイルをダブルクリックすればいいです.
第2の方法はpythonサードパーティライブラリが推奨し、ntplibを通じてwindows上で時間を同期する多くの場合、プログラムスクリプトを通じて北京時間を同期的に補正する必要があります.linuxでの同期時間は比較的便利で、ntpdateソフトウェアをインストールすればいいです.しかしWindowsでは同期時間が面倒です.このとき,ネットワークから正確な時間を取得しdosコマンドを呼び出して時間を変更することが考えられる.どこで手に入れますか?もちろん国家授時センターです.授時センターのウェブサイトはcnです.pool.ntp.org(注意、広く伝わっている210.72.145.44というipはすでに失効しており、ドメイン名を直接使用しています.)ただし,時間センタから取得する時間はntpプロトコル解析が必要である.ntplibはこのことをしたのです.なおdos修正日時は2つのコマンドで実現し,dateコマンド修正日時,timeコマンド修正時間である.
インストールntplib:

easy_install ntplib pip install ntplib

以下にコードを書きます.

import os 
import time 
import ntplib 
c = ntplib.NTPClient() 
response = c.request('pool.ntp.org') 
ts = response.tx_time 
_date = time.strftime('%Y-%m-%d',time.localtime(ts)) 
_time = time.strftime('%X',time.localtime(ts)) 
os.system('date {} && time {}'.format(_date,_time)) 

以上が本稿のすべてですが、2つのpythonスクリプトでシステム時間を設定する方法を学びましたか?