时间差計算

2019-12-12 18:21发布

条件如下
//输入开始 年 月 日 时 分 秒,
//输入结束 年 月 日 时 分 秒
// 计算两个时间的时间差,结果转成秒数
用 C语言,方便提供例程吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
dadatou
1楼-- · 2019-12-13 18:31
直接把时间转换成linux时间戳,再相关即得时间差呀,相当简单,不一定得在linux平台,只要有time库就可以了。
dadatou
2楼-- · 2019-12-13 20:45
tomzbj 发表于 2019-3-12 09:18
在啥平台上?linux的话直接把两个时间都转成timestamp然后相减就行了。没有time库的话。。得自己实现一下ti ...

不个定要在linux平台,只要有time库就可以转换。
lmf159
3楼-- · 2019-12-14 01:40
 精彩回答 2  元偷偷看……
qtechzdh
4楼-- · 2019-12-14 02:19
都转成时间戳,然后做减法。
fw190d9
5楼-- · 2019-12-14 03:34
又是畢業設計嗎?
蛋定
6楼-- · 2019-12-14 05:36
请搜时间戳的函数,然后计算。 我刚用了,贴一下:

#define SECOND_OF_DAY 3600*24
extern const uint8_t Cnst_Month_Tbl[12];
const uint8_t Cnst_Month_Tbl0[12]={31,28,31,30,31,30,31,31,30,31,30,31};

void GetDateTimeFromSecond(u32 lSec, _real_time *tTime)
{
        u16 i,j,iDay;
        u32 lDay=0,temp;
        lSec = lSec + 8*3600;//转换为北京时间
        temp=lSec;
        while(temp>SECOND_OF_DAY)
        {
                temp-=SECOND_OF_DAY;
                lDay++;
        }        
        ////lDay = lSec/SECOND_OF_DAY;  不支持除法 32位 ?? 20190227
        ////lSec = lSec%SECOND_OF_DAY;
        lSec=temp;
        i = 1970;
        while(lDay > 365)
        {
                if(((i%4==0)&&(i%100!=0)) || (i%400==0))//闰年
                        lDay -= 366;
                else
                        lDay -= 365;
                i++;
        }
        if((lDay == 365) && !(((i%4==0)&&(i%100!=0)) || (i%400==0)))
        {
                lDay -= 365;
                i++;
        }
        tTime->year = i;//年份
        for(j=0;j<12;j++)
        {
                if((j==1) && (((i%4==0)&&(i%100!=0)) || (i%400==0)))
                        iDay = 29;
                else
                        iDay = Cnst_Month_Tbl0[j];
                if(lDay >= iDay) lDay -= iDay;
                else
                        break;
        }
        tTime->month = j+1;
        tTime->day = lDay+1;
        tTime->hour = ((lSec / 3600))%24;
        tTime->min = (lSec % 3600) / 60;
        tTime->sec = (lSec % 3600) % 60;
}

一周热门 更多>