计算从1970年1月1日0时开始,到某个时间点所经历的秒数

#define MINUTE 60 //一分钟的秒数
#define HOUR (MINUTE*60) //一小时的秒数
#define DAY (HOUR*24)   //一天的秒数
#define YEAR (DAY*365)  //一年的秒数
static int month[12]={
0,
DAY*(31)
long mktime(struct tm *tm)
{
    long res;
    int year;
    year=tm->tm_year-1970;
    //这些年经过的秒数时间+每个闰年多一天(距1970年最近的闰年是1972年,且每四年一个闰年,这样多算了像2100这样的年了)
    res=YEAR*year+DAY*((year+1)/4)
    //判断当前年是否是闰年
    if((tm->tm_year%4==0&&year%100!=0)||year%400==0)
        if(tm->tm_mon>1)//是闰年的话,判断月是否大于1月(实际中的2月)(从0月开始,到11月)
            res+=DAY;
    //判断从1970年到这一年,这一时间段中有多少个能被100整除,但不能被400整除的年
    if(tm->tm_year>2100)    //第一个这样的数是2100
        res-=((tm->tm_year-2001)/100)*DAY;
    //以上代码都是判断一年到底是365天,还是366天。是从年的角度判断是否该加一。
    res+=month[tm->tm_mon];  // 加上当月时的秒数
    res+=DAY*(tm->tm_mday-1);  // 加上当前天过去的天数秒数
    res+=HOUR*tm->tm_hour;//加上当天过去的小时秒数
    res+=MINUTE*tm->tm_min;//加上当天过去的分钟秒数
    res+=tm->tm_sec;  //加上当天过去的秒数秒数
    return res;
}







转载于:https://my.oschina.net/935572630/blog/368824

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值