2011-07-06 192 views
39

我有兩個日期。一個日期是輸入,另一個是DateTime.Now。我有他們的mm/dd/yyyy格式,它甚至可以是m/d/yy格式。兩個日期都可以爲空,即數據類型爲DateTime?,因爲我也可以將null也作爲輸入。現在我想僅將兩個日期與mm/dd/yyyym/d/yy格式進行比較。如何比較日期c#

回答

63

如果你在DateTime變量中有你的日期,他們不會有的格式。

您可以使用Date屬性返回DateTime值並將時間部分設置爲午夜。所以,如果你有:

DateTime dt1 = DateTime.Parse("07/12/2011"); 
DateTime dt2 = DateTime.Now; 

if(dt1.Date > dt2.Date) 
{ 
    //It's a later date 
} 
else 
{ 
    //It's an earlier or equal date 
} 
+9

如果你不需要小時,分鐘等,比'DateTime.Now.Date'更好地使用'DateTime.Today' –

+0

@Piotr - 好點 - 除非他們還需要訪問小時/分鐘/秒作爲另一部分工作。 –

+1

@Damien_The_Unbeliever這是否適用於任何日期格式? 'yyyy/MM/dd'呢? – Arbaaz

7

首先,明白DateTime對象沒有格式化。他們只是將年,月,日,小時,分鐘,秒等存儲爲一個數值,並且當您想以某種方式將其表示爲字符串時,就會發生格式化。您可以比較DateTime對象而無需格式化它們。

要與DateTime.Now比較輸入日期,您需要先解析輸入一個日期,然後比較公正的年/月/日部分:

DateTime inputDate; 
if(!DateTime.TryParse(inputString, out inputDate)) 
    throw new ArgumentException("Input string not in the correct format."); 

if(inputDate.Date == DateTime.Now.Date) { 
    // Same date! 
} 
19

如果您在DateTime變量有日期,那麼它的一個DateTime對象,並且不包含任何格式。當您調用DateTime.ToString方法並在其中提供格式時,格式化日期表示爲string

比方說你有兩個DateTime變量,可以使用比較方法比較,

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); 
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0); 
int result = DateTime.Compare(date1, date2); 
string relationship; 

if (result < 0) 
    relationship = "is earlier than"; 
else if (result == 0) 
    relationship = "is the same time as";   
else 
    relationship = "is later than"; 

代碼段從msdn拍攝。