Abh*_*rni 2 python windows time winapi
我正在尝试使用以下代码设置系统日期(而不是时间).我想将当前时间设置为新日期.以下是示例代码,我发现更改后的时间不正确.
day = 20
month = 3
year = 2010
timetuple = time.localtime()
print timetuple
print timetuple[3], timetuple[4], timetuple[5]
win32api.SetSystemTime(year, month, timetuple[6]+1,
day, timetuple[3], timetuple[4], timetuple[5], 1)
Run Code Online (Sandbox Code Playgroud)
您正在从localtime时间戳设置系统时间.后者根据本地时区进行调整,同时SetSystemTime 要求您使用UTC时区.
time.gmtime()改为使用:
tt = time.gmttime()
win32api.SetSystemTime(year, month, 0, day,
tt.tm_hour, tt.tt_min, tt.tt_sec, 0)
Run Code Online (Sandbox Code Playgroud)
然后你也可以避免现在处理你是否处于夏令时(DST),而不是处理冬季时的三月.
或者,您可以使用datetime.datetime.utcnow()调用并获取毫秒参数作为奖励:
import datetime
tt = datetime.datetime.utcnow().time()
win32api.SetSystemTime(year, month, 0, day,
tt.hour, tt.minute, tt.second, tt.microsecond//1000)
Run Code Online (Sandbox Code Playgroud)
请注意,我在两个示例中都将工作日项目设置为0; 调用时会被忽略SetSystemTime.如果它没有被忽略,那么你的代码示例的值就是错误的; 周一到周日的Python值范围从0到6,而Win32 API在周日到周六需要 1到7 .你必须添加2并使用modulo 7:
win32_systemtime_weekday = (python_weekday + 2) % 7)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |