一个有趣的事实,我敢肯定我们大多数玩过时间领域的人都知道 - 有些日期/时间可能看起来有效但实际上并不存在,例如夏令时切换时间凌晨 2:30。
在 C++(标准或 Windows)中是否有一种方法可以确定给定的日期/时间在给定的时区规范中是否有效?
最佳答案
使用特定于 Windows 的函数,您可以制作 a call to TzSpecificLocalTimeToSystemTime()
后跟 a call to SystemTimeToTzSpecificLocalTime()
与相关时区。
完成后,如果两者不同,您将得到一个无效时间,因为 TzSpecificLocalTimeToSystemTime
会将无效时间转换为“真实”时间。
bool IsValidTime(TIME_ZONE_INFORMATION tz, SYSTEMTIME st)
{
SYSTEMTIME utcSystemTime, st2;
TzSpecificLocalTimeToSystemTime(&tz, &st, &utcSystemTime);
SystemTimeToTzSpecificLocalTime(&tz, &utcSystemTime, &st2);
return (st != st2);
}
关于c++ - 有没有办法确定日期/时间是否不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36493505/