C语言mktime函数是如何实现的,谁能帮忙提供一下源码?

2024-11-15 06:52:02
推荐回答(1个)
回答1:

它是将时间结构转换为1970-1-1以来经过的秒数。下面是自己做的类似函数:
int isleap(int year)
{
return (year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0);
}

unsigned long mktime(DateTime& dt)
{
unsigned long result;
// 以平年时间计算的秒数
result = (dt.tm_year - 1970) * 365 * 24 * 3600 +
(Tab_DoyOfMonth[isleap(dt.tm_year)][dt.tm_mon-1] + dt.tm_mday - 1) * 24 * 3600 +
dt.tm_hour * 3600 + dt.tm_min * 60 + dt.tm_sec;
// 加上闰年的秒数
for(int i=1970; i < dt.tm_year; i++)
{
if(isleap(i))
{
result += 24 * 3600;
}
}
return(result);
}