纯C语言实现日期到时间戳转换mktime实现

纯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小时 */

}


本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

查看打赏记录

发表评论请遵守党国法律!后台审核后方可显示!
  • 最新评论
  • 总共0条评论
  • Blog v1.1© 2024 labisart.com 版权所有 | 联系:labartwork@163.com