1

我的一个 c++ 函数根据其他变量的值进行一些计算。该程序要求提供一堆信息,包括 2 个单独事件的开始日期和结束日期。

p1.start_datep2.start_date; p1.end_date并且p2.end_date其中每个都存储有日、月和年。

我需要设置combined.start_date较早发生的情况(p1.start_datep2.start_date),并且需要设置combined.end_date较晚发生的情况。

我可以在开始这个过程中得到一些帮助吗?这是我现在拥有的:http: //pastebin.com/huJprtHj

4

3 回答 3

2

至少假设所涉及的日期是合理的当前1,将月/日/年填充到 astruct tm并用于mktime转换为 a timt_t,那么您可以time_t直接比较这两个 s。

如果您需要/想要支持更广泛的日期,您可以考虑Ray Gardner 的 Julian Date routines


  1. 至少在典型情况下,从 1970 年到至少 2038 年的日期是可行的。
于 2013-03-07T23:20:44.630 回答
1

通常,可以通过两种方式进行基于日期的计算。

  1. 将日期转换为“自某个固定日期(例如 1970 年 1 月 1 日)以来的天数”。
  2. 使用日期组件(年、月、日)。

如果这就是您需要做的全部,只需比较每个部分(与“最高优先”)就可以了 - 您只需要一个可以告诉您 date1 是否小于 date2 的比较函数。

你剩下的问题应该是非常简单的编程。

编辑:澄清:对于 DATE 计算,从设定日期开始的天数就可以了。系统库函数的函数使用秒 [在某些系统中,为几分之一秒] 的完整时间可以低至几秒。这对于比较不涉及时间的日期不是必需的。

于 2013-03-07T23:21:05.357 回答
0

做这个功能。我猜您的日期存储在一个名为 的对象中Date,因为您没有指定。

bool operator< ( const Date& left, const Date &right )
{
   // ...
}

然后你可以比较你的日期对象,就像它们是内置类型一样int

于 2013-03-07T23:20:37.093 回答