c++ - 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
解决方案
tm t1,t2;
这使两个tm
结构未初始化,并且以下代码未设置所有字段,因此其中一些可能会保留为无效值。
默认初始化这两个变量会产生预期的结果。
tm t1 = {}, t2 = {};
可以通过检查指示失败mktime
的返回值-1
来捕获这个(和其他)问题。
推荐阅读
- android - 离散傅里叶变换 OpenCV 无法在 Android 上运行
- angular - 一旦我知道 Angular 中的音频元素上存在对象键,就运行函数
- php - 求和 $n 次递增的数学循环
- python - rs-convert 不会从 rosbag 文件生成 .ply 文件
- python - SSE2 指令,PMULUDQ 乘法题
- image - AHK:尝试在 GUI 中的另一张图片上添加具有透明背景的图片
- python - AttributeError:模块'turtle'在spyder中没有属性'screen'?
- ios - 使用自定义标签栏图像和没有标签栏标题的插图时如何调整标签栏徽章位置?
- c++ - 如何将 32 字符(0/1)的序列转换为 32 位(uint32_t)?
- javascript - 将元素从Javascript中的for循环放入数组中