2010-07-19 3 views
3

Существует множество пакетов для получения/форматирования текущей даты или определения даты n временных интервалов. Но я должен упускать из виду существование простого метода для установки даты (например, Windows date.exe) в Python.Установка системной даты в Python (в Windows)

Несомненно, такая функция существует? Я не смог найти что-либо в Google, документы python (datetime, time, os и т. Д.) Или переполнение стека. ТИА.

изменить: В заключение, this страница рассказывает вам, как получить их.

И вы можете установить их, используя либо

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

или

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

date.exe также, как представляется, принять дд-мм-уу, 4-значные лет, и, возможно, другие альтернативы.

Я предпочитаю последнее для простоты.

+0

От MSDN: 'член wDayOfWeek структуры SYSTEMTIME игнорируется.' Команда даты изменчива и будет ломаться в зависимости от региональных настроек, поэтому лучше избегать ее, если вы хотите, чтобы ваш код работал в нескольких средах. – Jim

+0

'SetSystemTime' ожидает параметров в UTC. Страница OP, связанная с упоминанием 'datetime.datetime.now()', но нужно использовать 'datetime.datetime.utcnow()', если передать результаты в 'win32api.SetSystemTime' – Jim

ответ

4

Вы должны иметь возможность использовать win32api.SetSystemTime. Это часть pywin32.

+0

Странно, что у python по умолчанию нет что-то подобное. –

+0

Почему для этой функции требуется параметр дня недели? И было бы здорово, если бы вы могли просто передать объект datetime Python. – Chelonian

2

Вы можете не использовать os.system ("shell_cmd_in_here"), чтобы вызвать Linux ЦМД:

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

Это установить системную дату на: 2 Окт 2010 18:00:00, например.

Так в целом это:

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

Судо может понадобиться, хотя здесь.

+0

Sudo, на окнах? Кроме того, какая гарантия у вас есть, что «дата» даже проверяет stdin? – Arafangion

+0

К сожалению, вы были на Linux. Вы можете сделать то же самое для Windows, см. Эту ссылку о том, как установить дату в командной строке http://ss64.com/nt/date.html. Просто поставьте «set date» cmd в свой вызов os.system(). – Martin

Смежные вопросы