2011-10-12 58 views
53

代碼行DateTime d = DateTime.Today;結果爲10/12/2011 12:00:00 AM。我怎樣才能得到日期部分。當我比較兩個日期時,我需要忽略時間部分。從C#中的DateTime中提取日期部分

+0

今天還應該給0:00:00結果。 –

+0

@digem:你的意思是午夜是_shown_爲12AM?可能。我不認爲今天實際上會回報一種依賴於文化的價值。 –

+0

@亨克:在英國文化Today.ToString()返回該值;) – digEmAll

回答

98

DateTime是被用來存儲DateTime數據類型。但它提供了屬性來獲得零件。

您可以從Date屬性中獲取日期部分。

http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx

DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0); 
Console.WriteLine(date1.ToString()); 

// Get date-only portion of date, without its time. 
DateTime dateOnly = date1.Date; 
// Display date using short date string. 
Console.WriteLine(dateOnly.ToString("d")); 
// Display date using 24-hour clock. 
Console.WriteLine(dateOnly.ToString("g")); 
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm")); 
// The example displays the following output to the console: 
//  6/1/2008 7:47:00 AM 
//  6/1/2008 
//  6/1/2008 12:00 AM 
//  06/01/2008 00:00 
+0

var object = DateTime.Now; object.Date.ToString(「MM/dd/yyyy HH:mm」) –

+2

[Here](http://stackoverflow.com/a/39316624/2218697)是使用'String.Format'的另一個解決方案**,希望能幫助某人。 – stom

29

沒有辦法「放棄」時間組件。

DateTime.Today是一樣的:

DateTime d = DateTime.Now.Date; 

如果你只想顯示只有日期部分,只要做到這一點 - 使用ToString與你所需要的格式字符串。

例如,使用standard format string 「d」(長日期格式指定符):

d.ToString("D"); 
+6

+1:有時答案只是一個「 .'遠離 –

+0

@已結束。不,它返回相同的。 '10/12/2011 12:00:00 AM'。 – Rauf

+0

@Rauf - 你無法擺脫那部分。您可以選擇不顯示它。 – Oded

14

當僅比較datatimes日期,使用日期屬性。因此,這應該可以正常工作了,你

datetime1.Date == datetime2.Date 
+0

這是最好的答案。 – Adam

+0

+1,這與「比較」日期有關。其他答案是顯示它們 – roo2

5

可以使用formatString的

DateTime time = DateTime.Now;    
String format = "MMM ddd d HH:mm yyyy";  
Console.WriteLine(time.ToString(format)); 
11
DateTime d = DateTime.Today.Date; 
Console.WriteLine(d.ToShortDateString()); // outputs just date 

,如果你想比較的日期,而忽略了一部分時間,使一個利用DateTime.YearDateTime.DayOfYear性能。

代碼片段

DateTime d1 = DateTime.Today; 
DateTime d2 = DateTime.Today.AddDays(3); 
if (d1.Year < d2.Year) 
    Console.WriteLine("d1 < d2"); 
else 
    if (d1.DayOfYear < d2.DayOfYear) 
     Console.WriteLine("d1 < d2"); 
相關問題