2013-04-07 3 views
6

Die Sommerzeit (USA) im Jahr 2013 begann um 2:00 Uhr am Sonntag, 10. März. Also, sagen wir, jetzt ist der 9. März 2013 und ich nenne die folgende API auf einem bereits erstellten Timer Timer-Handle:Was passiert, wenn CreateWaitableTimer auf nicht existierendes Datum/Uhrzeit eingestellt ist?

March 10th, 2013, 2:10 AM ist eine nicht existierende Zeit, da die Zeit um eine Stunde vorverlegt wird, statt 2 AM also 3 Uhr.

Also meine Frage, was wird mit meinem Timer passieren? (Ich kann keine Dokumentation für diesen Fall finden.)

+0

Warum erstellen Sie keine solche Situation, indem Sie einfach Ihre interne Uhr für einige Minuten weiterleiten? –

+0

+1. Aber die Leute neigen nicht dazu vorauszusehen. – SChepurin

+0

Ja, ich spiele jetzt damit, aber ich bekomme "seltsame Effekte" in OS und Visual Studio. Ich dachte mir eine offizielle Dokumentation dafür zu finden ... – c00000fd

Antwort

7

Ich vermute, dass Sie bereits die Antwort auf Ihre Frage wissen, weil Ihr Kommentar heißt es ausdrücklich:

// Points _as absolute time_ to March 10th, 2013, at 2:10 AM 

So sind Sie sich bewusst, dass die Dokumentation für SetWaitableTimer() sagt:

Seien Sie sicher, zu verwenden, eine UTC-basierte absolute Zeit, da das System intern die UTC-basierte Zeit verwendet.

Seit UTC über DST kümmert sich nicht auch immer, wird Ihre Timer auf March 10th, 2013, 3:10 AM, Ihre Ortszeit ausgelöst werden.

+0

Hmm. Guter Punkt. Ja, ich habe diesen UTC-Teil verpasst. Es macht jetzt Sinn. Danke, dass Sie darauf hingewiesen haben ... – c00000fd

+0

Unter Berücksichtigung all der damit verbundenen Zeit, die wir erben, ist dies immer noch eine sehr gute Frage zu stellen. – SChepurin

3

SetWaitableTimer erwartet die pDueTime in UTC angegeben werden; es gibt also keine Möglichkeit, es mit einem solchen nicht existierenden Datum/Zeit zu bezeichnen.

Verwandte Themen