如何在C++中使用比较运算符来比较日期和时间
我有一个字符串读入,它被分隔为年,月,日,时,分,秒,毫秒。我希望能够比较两个不同的日期/时间戳。防爆。检查lhs上的小时是否大于rhs上的hr。然后继续检查月,日,时,分,秒和毫秒。到目前为止,我已经知道我正在努力做什么,只是很难将它放在一起。如果任何人有任何想法,真棒。 PS。这不是一项家庭作业,我正在构建应用程序的过程中,同时学习C++。如何在C++中使用比较运算符来比较日期和时间
ClassName operator < (ClassName &lhs, ClassName &rhs);
以上是功能。
谢谢!
使它成为一个独立的功能:
friend bool operator < (const ClassName &lhs, const ClassName &rhs);
注意的变化:
- 独立式,因为这个函数会将都同样的操作数,它不要么修改。
-
const
参数,因为一个健全的比较实现不应该修改它的操作数。 - return
bool
,因为比较理想情况下应返回bool
,否? -
friend
,因为设计良好的班级通常会有这些数据成员private
。
该实现应该简单地按照您提到的算法对数据成员进行比较,并返回bool
结果。
谢谢大家的解释! – Cka91405 2013-03-27 14:26:05
我会去和一帮if语句:
if(lhs.year > rhs.year)
else if(lhs.year < rhs.year)
else
{
and check here for months etc.
}
谢谢你的帮助! – Cka91405 2013-03-27 14:27:29
operator <
应该返回一个值bool
:
bool operator < (const ClassName &l, const ClassName &r)
{
return
std::tie(l.year, l.month, l.day, l.hour, l.minute, l.second, l.millisecond)
<
std::tie(r.year, r.month, r.day, r.hour, r.minute, r.second, r.millisecond);
}
而且你可以使用std::tie
,奇妙地减少代码的行数。
除非你为了任何疯狂的原因改变参数,否则它们应该是'const'。 – chris 2013-03-27 14:06:55
不应该返回一个'bool'吗? – Morwenn 2013-03-27 14:08:17
谢谢大家的帮助!我非常感激! – Cka91405 2013-03-27 14:23:11