2009-10-12 141 views
2

我有一個文件'date.txt',它有日期。像, 週一10月13日9時37分08秒2009年在C++中比較日期

現在我想比較這最新與系統日期。我如何在C++中比較日期?

我用這個代碼從文件內容「date.txt」

string date; 
    while (inDateFile >>date) //inDateFile is an ifstream object 
      cout<<date<<endl; 

而這種代碼來獲得系統日期,

time_t timer; 
    struct tm *tblock; 
    timer = time(NULL); 
    tblock = localtime(&timer); 
    string str = asctime(tblock); 

現在,我怎麼這兩個日期比較。?

+0

這裏沒有足夠的數據來回答問題。第一個代碼段中的'date'的類型是什麼? – Omnifarious 2009-10-12 05:00:29

+0

date是一個字符串數據類型。我只是閱讀字符串中的文件內容並顯示它們 – SyncMaster 2009-10-12 05:12:47

+0

這不是一個答案本身,只是一個評論:該地區將如何影響您閱讀的文本或在這裏是不相關的?在我看來,這整個要求有點脆弱。 – 2009-10-12 07:35:57

回答

1

日期字符串轉換爲數值時間值(32或64位),又名,使時間,然後比較哪個時間(NULL)返回的系統時間。

+0

man strptime/mktime – Test 2009-10-12 05:21:21

+0

是的,不要打擾將當前日期轉換爲字符串。它不會給你太多。除了將data.txt信息存儲爲「時間」之外,還會使後面的操作變得更加容易。 – baash05 2009-10-12 05:32:41

0

,如果你只想分析你的文件,你需要分割字符串中的RESP值的字符串,你也可能需要檢查哪些國家地區考慮到這一點,因爲不同的地區有不同的順序/月名稱等等。您可以按照哪種順序配置不同的記號出現在文本中。

解決這個問題的一種方法是,例如取出字符串'date',然後使用boost中的模板Tokenizer(或者如果你想這樣做,C方法調用strtok()函數)來分割字符串根據分隔符轉換爲子字符串。之後,很容易轉換輸入。

另一個也許更簡單的方法是,當你從文件中讀取的讀取整個字符串,而不是讀了上面的分隔符例如','然後再讀 - 你可以使用inDateFile.getline()。

2

我們使用升壓date_time用於讀取日期字符串,然後比較它們。它在我們的經驗中效果很好。