2016-12-22 288 views
0

如果日期已過或者我比較用戶給定的日期與System.DateTime,它在C# 如果日期因此被認爲是system.date時間匹配日期時間比較C#,當我嘗試比較明年日期時間

if ((Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == 0 || 
    Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == -1)) 
{ 
    filenamedate = DR_FILENAME; 
    fileFound = true; 
} 

我的問題是,如果我給出一個像2016/12/22 3:00 pm的日期,它將在系統時間的確切2016/12/22 3:00 pm接受它。

如果時間已經過去,例如系統時間爲2016/12/22 3:00 pm,用戶時間爲2016/12/21 3:00 pm。邏輯是接受。

但如果我給系統時間2016/12/21 3:00 pm和用戶時間2017/12/21 3:00 pm ..它再次接受。理想情況下,它不應該直到系統到2017年的確切日期。 我在哪裏出錯了。

+0

你想通過這個比較來實現什麼? –

+7

比較'DateTime'對象本身,而不是將它們轉換爲'字符串'的結果。 – Phylogenesis

+0

如果日期等於或少於它應該在循環中,如果日期和年份更多,如果不應該進入。 –

回答

2

替換此:

if ((Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == 0 || 
    Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == -1)) 

與此:

if (Convert.ToDateTime(firstTimeOFArray) <= DateTime.Now) 

這是你的意思大概是什麼。從那開始,你將更容易理解你自己的代碼的語義,並實現你想要的。

請注意,對於兩個DateTime s的字符串表示法的字典對比,將需要組件序列yyyy MM dd HH mm才能正常工作。