首页 > 解决方案 > c ++从2个时间点计算经过的秒数

问题描述

我正在尝试计算从 2 个时间点过去了多少秒。我的代码:

#include <iostream>
#include <ctime>

using namespace std;


int main()
{
    int FH, FM, FS, SH, SM, SS;

    cin >> FH >> FM >> FS >> SH >> SM >> SS;

    tm t1,t2;

    t1.tm_hour = FH;
    t1.tm_min = FM;
    t1.tm_sec = FS;
    t1.tm_mon = 1;
    t1.tm_mday = 1;


    t2.tm_hour = SH;
    t2.tm_min = SM;
    t2.tm_sec = SS;
    t2.tm_mon = 1;
    t2.tm_mday = 1;

    cout << difftime(mktime(&t2),mktime(&t1));
}

但它只是不断抛出0。输入如下:

FH, FM, FS -> First moment hours,minutes,seconds
SH, SM, SS -> Second moments hours, minutes, seconds

标签: c++time

解决方案


tm t1,t2;

这使两个tm结构未初始化,并且以下代码未设置所有字段,因此其中一些可能会保留为无效值。

默认初始化这两个变量会产生预期的结果

tm t1 = {}, t2 = {};

可以通过检查指示失败mktime的返回值-1来捕获这个(和其他)问题。


推荐阅读