我有一个在跨平台上运行的C应用程序。在这个程序中,我需要编写一个函数来确定给定的日期是否为DST 实际上,我试图在纯C中找到DST begin-DST结束日期。有没有简单而标准的方法来做到这一点?
答案 0 :(得分:5)
time.h
为tm
结构提供tm_isdst
标记。使用time
获取当前时间localtime
以获取tm
结构,并将时间调整为当前区域设置并读取tm_isdst
标记。
从联系手册:
tm_isdst A flag that indicates whether daylight saving time is in effect at the
time described. The value is positive if daylight saving time is in effect, zero
if it is not, and negative if the information is not available.
答案 1 :(得分:0)
代码是:
time_t rawtime;
struct tm timeinfo; // get date and time info
time(&rawtime);
localtime_s(&timeinfo, &rawtime);
int isdaylighttime = timeinfo.tm_isdst;
答案 2 :(得分:-1)
不允许实现假设tm_isdst始终为0。 它必须提供正确的数据。 如果实现不能提供与国家/地区中设置的规则一致的tm_isdst,则应将tm_isdst设置为负值,如7.23.1 / 4 in the same Standard中所述。