如何比较一个程序中的两个日期?

时间:2014-06-19 21:44:07

标签: c++ comparison console-application

因此,有两个日期,我必须检查date1是否远离date2。最好的方法是什么?

int date1_day = 21, date1_month = 1, date1_year = 1990;
int date2_day = 19, date2_month = 5, date2_year = 1989;

if(???)
{
   // date1 is further away
}

我几个小时都在挣扎这个。

4 个答案:

答案 0 :(得分:8)

在不使用任何逻辑运算符的情况下尝试此操作:

int date1 =  date1_day + date1_month*100 + date1_year*10000;
int date2 =  date2_day + date2_month*100 + date2_year*10000;  

if(date1 > date2)  
     printf("date1 is further away than date2\n");

答案 1 :(得分:6)

它不是火箭手术:

if ( date1_year > date2_year ||
    (date1_year == date2_year && date1_month > date2_month) ||
    (date1_year == date2_year && date1_month == date2_month && date1_day > date2_day))
{
    // date1 is further away
}

稍微想一想,我相信你可以想出一个更简单的方法。

答案 2 :(得分:2)

对5个逻辑运算符和6个Paul,R的比较,这里有4个逻辑运算符的版本,5个比较):

if(date1_year>date2_year || 
     (date1_year==date2_year && (date1_month>date2_month 
               || (date1_month==date2_month && date1_day>date2_day))))

答案 3 :(得分:2)

您可以使用std::tie中的<tuple>按字典比较多个变量。

if (std::tie(date1_year, date1_month, date1_day) >
    std::tie(date2_year, date2_month, date2_day))
{
    // date1 is further away
}