簡體   English   中英

如何比較日期?

[英]How do i compare dates?

我有字符串類型的日期,那么我需要比較這兩個日期

我已經嘗試過了,但是顯示出奇怪的輸出

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”格式的字符串時,這是一種特殊情況,其中字符串的小於運算符給出的結果與假設日期類的小於運算符相同。 這是因為日期以“ big endian”格式存儲,日期中的每個數字也都是“ big endian”。

字符串小於運算符將每個字符一一比較,如果一個小於另一個,則這是整個比較的結果。

您唯一需要做的就是確保您的月和日字段分別是兩個字符(如果是一個字符,請在前面加上零),然后比較字符串。

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

同上用於平等比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM