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

How to compare two dates in a program?

本文关键字:两个 日期 程序 何比较 比较      更新时间:2023-10-16

所以,有两个日期,我必须检查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
}

我已经纠结了好几个小时了

尝试不使用任何逻辑运算符:

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 date2n");

这不是火箭手术:

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
}
我相信你会想出一个更简单的方法。

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

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

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

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