基于Tim Golden的win32api docs,该方法采用以下形式的元组:
[0]整数:偏差
[1]字符串:标准名称
[2]SYSTEMTIME元组:标准日期
[3]int:标准偏差
[4]字符串:DaylightName
[5]SYSTEMTIME元组:DaylightDate
[6]内景:白昼偏差
更重要的是,尝试win32api.GetTimeZoneInformation(docs)看看元组应该是什么样子,这样{}就不会抱怨了。在
编辑:获取必要的特权
您需要SE_TIME_ZONE_NAME特权(请参见here)。有一个方便的更改特权的实现,AdjustPrivilegeover here。在
把它们放在一起:import ntsecuritycon, win32security, win32api
def AdjustPrivilege( priv ):
flags = ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
id = win32security.LookupPrivilegeValue(None, priv)
newPrivileges = [(id, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
# Enable the privilege
AdjustPrivilege(win32security.SE_TIME_ZONE_NAME)
# Set the timezone
win32api.SetTimeZoneInformation((-600,u'Eastern Standard Time',(2000,4,1,3,0,0,0,0),0,u'Eastern Daylight Time',(2000,10,1,2,0,0,0,0),-60))