在头文件中定义time_t mktime(struct tm * time);
将表示为struct tm对象的本地日历时间重新规范化,并将其转换为时代以来的时间作为time_t对象。time->tm_wday并被time->tm_yday忽略。中的数值time不检查超出范围。
试图确定夏令时是否在指定时间内生效的time->tm_isdst原因的负值mktime。
如果转换time_t成功,time则修改该对象。所有字段都会time更新以适合其适当的范围。time->tm_wday并time->tm_yday使用其他领域的信息重新计算。
参数
时间-指向指定本地日历时间转换的tm对象的指针
返回值
自成立以来的时间作为time_t成功的对象,或者-1如果time不能被表示为time_t对象(在这种情况下POSIX也需要EOVERFLOW被存储errno)。
注释
如果该struct tm对象是从POSIX strptime或等价函数获得的,则其值tm_isdst是不确定的,并且需要在调用之前明确设置mktime。
例
#define _POSIX_C_SOURCE 200112L // for setenv on gcc#include #include #include
int main(void){ setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific
struct tm tm = *localtime(&(time_t){time(NULL)}); printf("Today is %s", asctime(&tm)); printf("(DST i