> One key is in the "Remarks" section of 
> SystemTimeToTzSpecificLocalTime()'s documentation
> (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724949(v=vs.85).aspx):
> > The SystemTimeToTzSpecificLocalTime function may calculate the local time 
> > incorrectly under the following conditions:
> > - *The time zone uses a different UTC offset for the old and new years*.
> > - The UTC time to be converted and the calculated local time are in 
> > different years.

Thanks for that.  It looks like for Windows 7 and later, there's now a 
SystemTimeToTzSpecificLocalTimeEx (and TzSpecificLocalTimeToSystemTimeEx) which 
use the dynamic time zone structure.  It doesn't list the caveats that 
SystemTimeToTzSpecificLocalTime mentions, so perhaps its historical accuracy is 
better (for when DST has changed the rules for the timezone in the past).

It is a little more cumbersome to have those functions only in later versions 
of Windows - you'd need to LoadLibrary/GetProcAddress to be able to call 
SystemTimeToTzSpecificLocalTimeEx if you detect Windows 7 or later, and use 
SystemTimeToTzSpecificLocalTime otherwise (if you try to early bind and just 
call the function in an "if" statement, you'd get "entry point not found" on 
older operating systems).

Thanks,
-Daniel

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to