NTP から現在時刻を取得する関数
何で書いたのか記憶に無いのだが、発掘されたので.
def ntp_now(server, port = 123): from socket import socket, AF_INET, SOCK_DGRAM from struct import unpack from datetime import datetime s = socket(AF_INET, SOCK_DGRAM) try: s.sendto('\x1b' + 47 * '\0', (server, port)) result = s.recvfrom(1024)[0] finally: s.close() if result: return datetime.fromtimestamp(unpack('!12I', result)[10] - 2208988800L) else: None
動作確認.
>>> print ntp_now('ntp.jst.mfeed.ad.jp') 2008-09-07 23:36:03