localtime
タイムスタンプからシステム時刻を設定しています。後者はローカル タイムゾーンに合わせて調整されSetSystemTime
ますが、UTC タイムゾーンを使用する必要があります。
time.gmtime()
代わりに使用してください:
tt = time.gmttime()
win32api.SetSystemTime(year, month, 0, day,
tt.tm_hour, tt.tt_min, tt.tt_sec, 0)
また、現在夏時間 (DST) にいるかどうかに対処する必要もありませんが、3 月は冬時間になります。
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)
どちらの例でも、平日の項目を 0 のままにしてあることに注意してください。を呼び出すときは無視されSetSystemTime
ます。無視されなかった場合、コード例の値が間違っていました。Python の値の範囲は月曜日から日曜日まで 0 から 6 ですが、Win32 API は日曜日から土曜日まで1 から 7 を必要とします。2 を追加し、モジュロ 7 を使用する必要があります。
win32_systemtime_weekday = (python_weekday + 2) % 7)