将CreateWaitableTimer设置为不存在的日期/时间时会发生什么?

时间:2013-04-07 09:15:38

标签: c++ winapi timer dst

2013年的夏令时(美国)于3月10日星期日凌晨2:00开始。所以,现在是2013年3月9日,我在已创建的等待计时器句柄上调用以下API:< / p>

FILETIME ftWhen = //Points as absolute time to March 10th, 2013, at 2:10 AM
SetWaitableTimer(hTimer, ftWhen, 0, NULL, NULL, TRUE);

March 10th, 2013, 2:10 AM是一个不存在的时间,因为时间将提前一小时调整,而不是凌晨2点,它将是凌晨3点。

所以我的问题是,我的计时器会发生什么? (我似乎无法找到此案例的文档。)

2 个答案:

答案 0 :(得分:7)

我怀疑你已经知道你问题的答案,因为你的评论明确指出:

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

因此,您知道SetWaitableTimer()的文档说:

  

请务必使用基于UTC的绝对时间,因为系统使用基于UTC的时间   内部时间。

由于UTC不关心DST,您的计时器将在March 10th, 2013, 3:10 AM当地时间上触发。

答案 1 :(得分:3)

SetWaitableTimer期望pDueTime以UTC格式提供;所以没有办法用这样一个不存在的日期/时间来调用它。

相关问题