gpt4 book ai didi

python - 在 Python 中,使用 win32api 没有设置正确的日期

转载 作者:可可西里 更新时间:2023-11-01 09:48:15 28 4
gpt4 key购买 nike

我正在尝试使用以下代码设置系统日期(不是时间)。我想将当前时间设置为新日期。以下是示例代码,修改后发现时间不对。

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)

最佳答案

您正在根据 localtime 时间戳设置系统时间。后者针对本地时区进行了调整,而 SetSystemTime requires you to use the UTC timezone .

使用time.gmtime()相反:

tt = time.gmttime()
win32api.SetSystemTime(year, month, 0, day,
tt.tm_hour, tt.tt_min, tt.tt_sec, 0)

然后,您还可以避免处理现在是否处于夏令时 (DST) 与冬令时三月之间的问题。

或者您可以使用 datetime.datetime.utcnow() call并获得毫秒参数作为奖励:

import datetime
tt = datetime.datetime.utcnow().time()
win32api.SetSystemTime(year, month, 0, day,
tt.hour, tt.minute, tt.second, tt.microsecond//1000)

请注意,我在两个示例中都将工作日项目设置为 0;它在调用 SetSystemTime 时被忽略。如果它没有被忽略,那么您的代码示例的值是错误的; Python 的值范围从 0 到 6 表示星期一到星期日,而 Win32 API 希望从 1 到 7 表示星期日到星期六。您必须加 2 并使用模 7:

win32_systemtime_weekday = (python_weekday + 2) % 7)

关于python - 在 Python 中,使用 win32api 没有设置正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com