2013-04-07 16 views
6

L'ora legale (Stati Uniti) nel 2013 è iniziata alle 2:00 di domenica 10 marzo. Quindi, diciamo, ora è il 9 marzo 2013 e chiamo la seguente API su un timer temporaneo già creato:Cosa succede quando CreateWaitableTimer è impostato per data/ora non esistente?

March 10th, 2013, 2:10 AM è un tempo inesistente perché il tempo verrà regolato un'ora avanti quindi anziché 2 AM sarà 3:00.

Quindi la mia domanda, cosa succederà al mio timer? (Non riesco a trovare la documentazione per questo caso.)

+0

Perché non creare tale situazione semplicemente inoltrando l'orologio interno per alcuni minuti? –

+0

+1. Ma le persone non tendono a prevedere così avanti) – SChepurin

+0

Sì, ci sto giocando adesso ma ottengo "effetti strani" in OS e Visual Studio. Ho pensato di trovare qualche documentazione ufficiale per questo ... – c00000fd

risposta

7

Ho il sospetto che si conosce già la risposta alla tua domanda, perché il tuo commento afferma esplicitamente:

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

così sei consapevole del fatto che la documentazione per SetWaitableTimer() dice:

Assicurarsi di utilizzare un tempo assoluto basato su UTC, poiché il sistema utilizza internamente il tempo basato su UTC.

Dato UTC non si preoccupa di ora legale di sorta, il timer sarà attivato su March 10th, 2013, 3:10 AM, l'ora locale.

+0

Hmm. Buon punto Sì, ho perso quella parte UTC. Ha senso ora. Grazie per avermelo fatto notare ... – c00000fd

+0

Tenendo conto di tutto questo disordine relativo al tempo che ereditiamo, questa è ancora una buona domanda da porre. – SChepurin

3

SetWaitableTimer prevede che venga fornito in UTC lo pDueTime; quindi non c'è modo di chiamarlo con una data/ora così non esistente.