我正在尝试在 C 中实现两个简单的转换器,日期/时间到时间戳,反之亦然,而不依赖于时间库例程,例如 mktime 等。
时间戳以秒为单位,日期/时间结构采用以下格式:
无符号字符年份:0 到 99(代表范围 2000 到 2099)
无符号字符月份:1 到 12
无符号字符日:1 到 31
无符号字符小时:0 到 23
无符号字符分钟:0 到 59
无符号字符秒:0 到 59
我想对 dt2ts 转换器有第二个意见(假设输入是合法的):
unsigned int dt2ts(const dt_t* dt)
{
static unsigned short days[] = {0,31,59,90,120,151,181,212,243,273,304,334};
return ((((dt->year*365+dt->year/4)+days[dt->month-1]+dt->day)*24+dt->hour)*60+dt->minute)*60+dt->second;
}
除此之外,我将不胜感激完成 ts2dt 转换器的一些帮助:
void ts2dt(unsigned int ts,dt_t* dt)
{
dt->second = ts%60; ts /= 60;
dt->minute = ts%60; ts /= 60;
dt->hour = ts%24; ts /= 24;
dt->day = ?????;
dt->month = ?????;
dt->year = ?????;
}
谢谢