回答
import sys
import datetime
time_tuple = (2012, # Year
9, # Month
6, # Day
0, # Hour
38, # Minute
0, # Second
0, # Millisecond
)
def _win_set_time(time_tuple):
import pywin32
# http://timgolden.me.uk/pywin32-docs/win32api__SetSystemTime_meth.html
# pywin32.SetSystemTime(year, month , dayOfWeek , day , hour , minute , second , millseconds)
dayOfWeek = datetime.datetime(time_tuple).isocalendar()[2]
pywin32.SetSystemTime(time_tuple[:2] + (dayOfWeek,) + time_tuple[2:])
def _linux_set_time(time_tuple):
import ctypes
import ctypes.util
import time
# /usr/include/linux/time.h:
#
# define CLOCK_REALTIME 0
CLOCK_REALTIME = 0
# /usr/include/time.h
#
# struct timespec
# {
# __time_t tv_sec; /* Seconds. */
# long int tv_nsec; /* Nanoseconds. */
# };
class timespec(ctypes.Structure):
_fields_ = [("tv_sec", ctypes.c_long),
("tv_nsec", ctypes.c_long)]
librt = ctypes.CDLL(ctypes.util.find_library("rt"))
ts = timespec()
ts.tv_sec = int(time.mktime(datetime.datetime(*time_tuple[:6]).timetuple()))
ts.tv_nsec = time_tuple[6] * 1000000 # Millisecond to nanosecond
# http://linux.die.net/man/3/clock_settime
librt.clock_settime(CLOCK_REALTIME, ctypes.byref(ts))
if sys.platform=='linux2':
_linux_set_time(time_tuple)
elif sys.platform=='win32':
_win_set_time(time_tuple)
我沒有Windows機器,所以我沒有在Windows上測試它......但你明白了。
請注意,您需要安裝pywin32才能正常工作.... – 576i
使用'if sys.platform.startswith('linux')'來處理Python> = 3.3。 –
根據@ jk987的回答,正確的模塊名稱是'win32api',而不是'pywin32'。另外,'SetSystemTime'有8個參數;你可以添加'*',或者你可以做'remote_time = datetime.datetime.fromtimestamp(response.tx_time)+ datetime.datetime.utcnow() - datetime.datetime.now()'然後''win32api.SetSystemTime(remote_time .year,remote_time.month,remote_time.isoweekday(),remote_time.day,remote_time.hour,remote_time.minute,remote_time.second,remote_time.microsecond // 1000)'。 – wecsam
很好,現在我覺得這是最好的解決辦法
import sys,os
def change(s):
if s == 1:os.system('date -s "2 OCT 2006 18:00:00"')#don't forget to change it , i've used date command for linux
elif s == 2:
try:
import pywin32
except ImportError:
print 'pywin32 module is missing'
sys.exit(1)
pywin32.SetSystemTime(year, month , dayOfWeek , day , hour , minute , second , millseconds)# fill all Parameters with int numbers
else:print 'wrong param'
def check_os():
if sys.platform=='linux2':change(1)
elif sys.platform=='win32':change(2)
else:print 'unknown system'
現在它是治標不治本,希望這是有幫助的,ASLO看看
http://timgolden.me.uk/pywin32-docs/win32api__SetSystemTime_meth.html
http://timgolden.me.uk/pywin32-docs/win32api__SetLocalTime_meth.html
我不得不修改TMC的回答點點的Win32版本:
def _win_set_time(time_tuple):
import win32api
dayOfWeek = datetime(*time_tuple).isocalendar()[2]
t = time_tuple[:2] + (dayOfWeek,) + time_tuple[2:]
win32api.SetSystemTime(*t)
EG。當我根據多年的時間服務器(時間協議,RFC868)用它來設置時間,我aproximately做這種方式:
data = s.recv(4)
remote_time = (ord(data[0])<<24) + (ord(data[1])<<16) + (ord(data[2])<<8) + ord(data[3])
remote_time -= 2208988800
_win_set_time(time.gmtime(remote_time)[0:6] + (0,))
錯過'從datetime導入日期時間',否則安裝pywin32後工作 – 576i
- 1. 更改系統日期,時間
- 2. 比較系統日和日期時間
- 3. 更改系統日期和時間的Android編程
- 4. 更改日期和時間系統後Tomcat凍結
- 5. 如何禁用系統更改日期和時間屬性
- 6. 如何在Python中爲所有模塊更改日期/時間?
- 7. 更改系統日期
- 8. 從系統中拆分日期和時間::日期時間
- 9. 在VBScript中爲日期對象設置日期和時間而不更改系統日期/時間
- 10. Python日期時間和時間模塊之間的區別
- 11. 檢索系統日期和時間?
- 12. 當前系統日期和時間
- 13. R RStudio更改系統日期時間語言
- 14. VBA Access 2010用於更改系統日期,時間
- 15. 系統日期時間格式已更改
- 16. 更改系統日期時間格式C#
- 17. 系統日期時間已更改事件
- 18. 在WinCE上更改系統日期/時間的任何API
- 19. Python和模塊 - 日期
- 20. 我PendingIntents和系統時間更改
- 21. 當系統日期改變時,TimerTask獲取系統日期和時間停止運行
- 22. Android更改時區,時間和日期
- 23. 更新系統時間和日期從互聯網
- 24. 更改系統日期格式
- 25. 更改系統日期和時間通過C#中使用的DateTimePicker?
- 26. 在Python的日期時間模塊中更改一年的開始?
- 27. Apache與操作系統的時間差異日期和時間?
- 28. 使用Python中的日期時間模塊比較時間
- 29. Python日期時間模塊HR中的當前時間:MIN:SEC
- 30. Python - 日期和時間:AttributeError:'模塊'對象沒有屬性'month'
看看>> http://docs.python.org/library/ datetime.html – Hamoudaq
考慮到系統權限和身份驗證,對於Unix和Windows而言,這比您想象的要難得多。 –
@EngHamoud,我不認爲'datetime'模塊可以設置系統時間。這裏有一些方法可以在[Windows](http://stackoverflow.com/questions/3281254/setting-the-system-date-in-python-on-windows)和[Linux](http:// stackoverflow的.com /問題/ 2193964 /設置所述硬件時鐘功能於蟒)。 –