代码:
#include <stdio.h>
//转换
//参数:year 为某一年的全称:如 2020年
unsigned long My_mktime(unsigned int year, int mon, unsigned int day,
unsigned int hour, unsigned int min, unsigned int second)
{
unsigned int year_to_day = 0;
unsigned int mon_to_day = 0;
unsigned int day_to_day = 0;
/*把1月和2月当作上一年年底的最后两个月,让3月作为一年的第一个月*/
if((mon -= 2) <= 0)
{
mon += 12;
year -= 1;
}
year_to_day = (year - 1) * 365 + year / 4 - year / 100 + year / 400; //计算给出的年数到公元元年的天数
mon_to_day = (367 * mon / 12) - 30 + 59; //计算给出的月数转换成天数
day_to_day = day - 1; //当天不能计算上去,所以要减1
/*719162是0001年1月1日到1970年1月1日所经历的天数*/
return (((unsigned long)(((year_to_day + mon_to_day + day_to_day - 719162) * 24 + hour) * 60 + min) * 60) + second);
}
//测试
int main(void)
{
printf("Time-Sec1:[%ld].\n",My_mktime(2020,10,16,9,50,20));
printf("Time-Sec2+30:[%ld].\n",My_mktime(2020,10,16,9,50,50));
return 0;
}
结果:
参考:
https://www.cnblogs.com/panhao/p/6892037.html