两个用户输入时间 C++ 的差异
difference of two user entered time c++
我需要能够填充两个变量(一种时间变量),然后能够计算它们的差异。经过我所有的搜索,我找到了difftime
,但我的问题是,它使用time_t
变量,我不知道如何用我想要的时间填充"time_t"。例如,我想用户输入time_1并将time_2为 (10:04、11:05),它能够以秒、分钟、小时或其他方式显示差异。(例如 61 分钟)
我尝试了打击,但没有奏效:
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
tm time_1 = {0, 0, 0, 1, 0, 0, 0, 0, 0};
tm time_2 = {0, 0, 0, 1, 0, 0, 0, 0, 0};
time_1.tm_hour = 10;
time_1.tm_min = 4;
time_2.tm_hour = 11;
time_2.tm_min = 5;
double diff = difftime (mktime(&time_2),mktime(&time_1));
cout << diff << endl;
system("pause");
}
std::tm
具有以下成员 (http://en.cppreference.com/w/cpp/chrono/c/tm):
int tm_sec; // seconds after the minute – [0, 61](until C++11) / [0, 60] (since C++11)
int tm_min; // minutes after the hour – [0, 59]
int tm_hour; // hours since midnight – [0, 23]
int tm_mday; // day of the month – [1, 31]
int tm_mon; // months since January – [0, 11]
int tm_year; // years since 1900
int tm_wday; // days since Sunday – [0, 6]
int tm_yday; // days since January 1 – [0, 365]
int tm_isds; // Daylight Saving Time flag.
您只初始化了其中的几个成员。对于这两个对象,其余部分均未初始化。
因此,您的程序具有未定义的行为。
若要查看可预测的行为,请正确初始化对象。一种方法是使用:
tm time_1 = {0, 0, 0, 1, 0, 0, 0, 0, 0};
tm time_2 = {0, 0, 0, 1, 0, 0, 0, 0, 0};
在读取用户输入之前。
更新
用
std::time_t t = std::time(NULL);
std::tm time_1 = *std::localtime(&t);
tm time_2 = time_1;
初始化time_1
和time_2
似乎对我有用。
看到它在 http://ideone.com/AmCzTu 工作。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- KMP算法和LPS表构造的运行时间
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间