我如何比较日期

How do i compare dates?

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

我有字符串类型中的日期,然后我需要比较这两个日期

我已经尝试过,但它向我显示了奇怪的输出

string str="2019-1-12";
    string str1="2019-1-13";
    tm timeDate;
    tm timeDate1;
    strptime(str.c_str(),"%Y-%m-%d ", &timeDate); 
    time_t time_input = mktime(&timeDate);
    strptime(str1.c_str(),"%Y-%m-%d ", &timeDate1); 
    time_t time_input1 = mktime(&timeDate1);
    double timeDiff = difftime(time_input,time_input1);
    cout<<timeDiff;

使它

tm timeDate = {};
tm timeDate1 = {};

换句话说,在strptime调用之前,将tm结构的所有成员初始化为零。strptime仅填充有格式指定符的成员;其余的仍然是垃圾。

随着此更改,您的代码工作

小于比另一个日期

的希瑟

当您的日期是" yyyy-mm-dd"格式的字符串时,这是一种特殊情况,在这种情况下,字符串的操作员的结果与假设日期类别不如操作员相同的结果。这是因为日期存储在"大恩德尼"格式中,日期中的每个数字也为"大元素"。

字符串比运算符少于一个单一的字符比较一个,如果一个字符比另一个字符小于另一个字符,则是整个比较的结果。

您唯一需要做的是确保您的月和日字段每个字符是两个字符(如果它们是一个字符,则在前面零(,然后比较字符串。

cout << (str < str1) << 'n';

同上的平等比较。