如何解决如何比较以字符串格式给出的日期和时间?
我想知道如何在 C++ 中以字符串格式比较日期和时间? 换句话说,我的问题是如何使用库为以下类实现比较函数?
class DateTime {
private:
string date =;
string time ;
public :
DateTime (string d,string t) :date (d),time(t) {
}
DateTime diff (DateTime t1,DateTime t2) {
//?
}
};
让我们假设我这样称呼它
DateTime from ("2020-11-09","06:22:30");
DateTime to ("2021-04-03","23:54:13");
Date diff = to.diff (from,to);
这只是一个例子,任何比较日期和时间的建议都值得赞赏。我的限制是日期和时间以字符串格式给出,如果我能以秒或上面显示的类似字符串格式返回它们的差异,那就太好了。
我已经在 VScode 中尝试了这个 struct,但我收到编译错误,它无法识别 time_t
变量成员。
解决方法
这是我在搜索不同的参考资料后最终确定它的方法。 首先,我在使用大约 8000 个输入进行测试时得到了一些随机错误结果,但我意识到我在代码中注释的一个字段应该在调用 mktime() 函数之前更新。
class Time {
private:
time_t _timeType;
struct tm buf;
struct tm * _timeinfo = &buf;
string _timeStr;
string _dateStr;
public:
Time (string time,string date) : _timeStr(time),_dateStr(date) { // YYYY-MM-DD,HH:MM:SS
int hr = stoi(time.substr(0,2));
int min = stoi(time.substr(3,2));
int sec = stoi(time.substr(6,2));
int yr = stoi(date.substr(0,4));
int mon = stoi(date.substr(5,2));
int day = stoi(date.substr(8,2));
_timeinfo->tm_hour = hr;
_timeinfo->tm_min = min;
_timeinfo->tm_sec = sec;
_timeinfo->tm_mday = day;
_timeinfo->tm_mon = mon-1; // because it is in range of [0:11]
_timeinfo->tm_year = yr;
/*I updated this field to prevent strange reports based folloing this recommendation
https://stackoverflow.com/questions/26788470/difftime-returns-strange-value-on-particular-date
*/
_timeinfo->tm_isdst = -1;
_timeType = mktime(_timeinfo);
}
void compareTime (Time* t) {
cout<<_timeStr<<" "<< _dateStr<<" "<<t->_timeStr <<" "<<t->_dateStr<<" "<<difftime(_timeType,t->_timeType)<<endl;
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。