纯C语言实现日期到时间戳转换,真的没用库函数,嵌入式的偷笑吧:
这个兄弟的算法有问题:http://www.cnblogs.com/ysen/p/5782102.html
下面来自linux kernel代码,不过也有点问题,差了8小时,我最后减去了,这就对上了:
#define MINUTE 60// 1 分钟的秒数。 #define HOUR (60*MINUTE)// 1 小时的秒数。 #define DAY (24*HOUR)// 1 天的秒数。 #define YEAR (365*DAY)// 1 年的秒数。 static const time_t time_difference = 8 * HOUR; /* interestingly, we assume leap-years */ /* 有趣的是我们考虑进了闰年 */ time_t mymktime2(int year,int mon,int day,int hour,int min,int sec) { if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */ mon += 12; /* Puts Feb last since it has leap day */ year -= 1; } return ((( (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) + year*365 - 719499 )*24 + hour /* now have hours */ )*60 + min /* now have minutes */ )*60 + sec - time_difference; /* finally seconds .time_difference是我加入的,刚好差了8小时 */ }