class SystemTime(ctypes.Structure):
# typedef struct _SYSTEMTIME {
# WORD wYear;
# WORD wMonth;
# WORD wDayOfWeek;
# WORD wDay;
# WORD wHour;
# WORD wMinute;
# WORD wSecond;
# WORD wMilliseconds;
# } SYSTEMTIME, *PSYSTEMTIME;
_fields_ = [('Year', ctypes.c_uint16), ('Month', ctypes.c_uint16),
('DayOfWeek', ctypes.c_uint16), ('Day', ctypes.c_uint16),
('Hour', ctypes.c_uint16), ('Minute', ctypes.c_uint16),
('Second', ctypes.c_uint16),
('Milliseconds', ctypes.c_uint16)]
def settime(dt):
time = SystemTime()
time.Year = dt.year
time.Month = dt.month
time.DayOfWeek = dt.isoweekday()
time.Day = dt.day
time.Hour = dt.hour
time.Minute = dt.minute
time.Second = dt.second
time.Milliseconds = dt.microsecond // 1000
# BOOL WINAPI SetSystemTime(_In_ const SYSTEMTIME *lpSystemTime);
ctypes.windll.kernel32.SetSystemTime(ctypes.byref(time))
def getntptime(server='pool.ntp.org'):
# Unix epoch is 1.1.1970, NTP is 1.1.1900
system_epoch = datetime.date(*time.gmtime(0)[0:3])
ntp_epoch = datetime.date(1900, 1, 1)
epoch_diff = (system_epoch - ntp_epoch).days * 24 * 3600
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = b'\x1b' + (47 * b'\0')
client.sendto(data, (server, 123))
data, address = client.recvfrom(1024)
if data:
# network (big-endian), 12 * unsigned int, 11th value
epoch = struct.unpack('!12I', data)[10]
print(epoch)
epoch -= epoch_diff
print(epoch)
dt = datetime.datetime.utcfromtimestamp(epoch)
return dt
return False
def main():
settime(getntptime())
{"text":"text","html5":"html","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"lua","bash":"sh","erlang":"erlang","go":"golang","c":"c_cpp","cpp":"c_cpp","diff":"diff","latex":"latex","sql":"sql","xml":"xml","0":"text","abap":"abap","actionscript":"actionscript","actionscript3":"actionscript","ada":"ada","apache":"apache_conf","applescript":"applescript","asm":"assembly_x86","autohotkey":"autohotkey","closure":"closure","cobol":"cobol","coffeescript":"coffee","cpp-winapi":"c_cpp","c_loadrunner":"c_cpp","c_mac":"c_cpp","c_winapi":"c_cpp","csharp":"csharp","d":"d","dart":"dart","dot":"dot","eiffel":"eiffel","fortran":"fortran","groovy":"groovy","haskell":"haskell","haxe":"haxe","ini":"ini","io":"io","java":"java","java5":"java","make":"makefile","matlab":"matlab","mysql":"mysql","objc":"objectivec","ocaml":"ocaml","pascal":"pascal","perl":"perl","perl6":"perl","postgresql":"pgsql","powershell":"powershell","prolog":"prolog","properties":"properties","rails":"ruby","rust":"rust","scala":"scala","scheme":"scheme","smarty":"smarty","tcl":"tcl","vala":"vala","vb":"vbscript","verilog":"verilog","vhdl":"vhdl","yaml":"yaml"}