4
votes

There appears to be many packages for getting/formatting the current date, or finding out the date n time intervals from now. But I must be overlooking the existence of a simple method to set the date (like Windows' date.exe) in Python.

Surely such a function exists? I've been unable to find anything on Google, the python docs (datetime, time, os, etc) or stack overflow. TIA.

edit: To summarize,this page tells you how to get them.

And you can set them using either

win32api.SetSystemTime(year,month,dayOfWeek,day,hour,minute,second,millseconds)

or

os.system("date " + mm/dd/yy)

date.exe also appears to accept mm-dd-yy, 4-digit years, and probably other alternatives.

I prefer the latter for simplicity.

2
From MSDN: The wDayOfWeek member of the SYSTEMTIME structure is ignored. The date command is fickle and will break depending on regional settings so it's best to avoid it if you want your code to work on multiple environments. - Jim
SetSystemTime expects the parameters in UTC time. The page OP linked to mentions datetime.datetime.now() but one will need to use datetime.datetime.utcnow() if passing the results into win32api.SetSystemTime - Jim

2 Answers

4
votes

You should be able to use win32api.SetSystemTime. This is part of pywin32.

2
votes

Can you not use os.system("shell_cmd_in_here") to call the linux cmd:

date -s "2 OCT 2010 18:00:00"

This would set the system date to: 2 Oct 2010 18:00:00 for example.

So altogether it is:

os.system('date -s "2 OCT 2010 18:00:00"')