2011-10-12 28 views
53

La riga di codice DateTime d = DateTime.Today; genera 10/12/2011 12:00:00 AM. Come posso ottenere solo la parte della data. Devo ignorare la parte relativa all'ora quando confronti due date.estrarre la parte di data da DateTime in C#

+0

Oggi dovrebbe anche dare un risultato 00:00:00. –

+0

@digem: vuoi dire che la mezzanotte è _shown_ come 12AM? Potrebbe essere. Non penso che oggi restituirebbe un valore dipendente dalla cultura. –

+0

@Henk: nelle culture inglesi Today.ToString() restituisce quel valore;) – digEmAll

risposta

98

DateTime è un tipo di dati che viene utilizzata per memorizzare sia Date e Time. Ma fornisce Proprietà per ottenere la parte Date.

È possibile ottenere la parte di data da Date proprietà.

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; oggetto.Date.ToString ("MM/gg/aaaa HH: mm") –

+2

[Qui] (http://stackoverflow.com/a/39316624/2218697) è ** un'altra soluzione ** che utilizza 'String.Format', la speranza aiuta qualcuno – stom

29

Non c'è modo di "scartare" il componente orario.

DateTime.Today è lo stesso:

DateTime d = DateTime.Now.Date; 

Se si desidera solo visualizzazione solo la parte di data, è sufficiente fare che - utilizzano ToString con la stringa di formato che vi serve.

Ad esempio, utilizzando il standard format string "D" (formato di data identificatore):

d.ToString("D"); 
+6

+1: A volte la risposta è solo un ' . away away –

+0

@Oded. No. Ritorna lo stesso. '10/12/2011 12:00:00». – Rauf

+0

@ Rafa - Non puoi liberarti di quella porzione. Puoi scegliere di non visualizzarlo però. – Oded

14

Quando si confrontano solo la data delle datatimes, utilizzare la proprietà Data. Quindi questo dovrebbe funzionare bene per voi

datetime1.Date == datetime2.Date 
+0

questa è la migliore risposta. – Adam

+0

+1, questo è rilevante per le date di confronto. altre risposte sono per visualizzarle – roo2

5

è possibile utilizzare un 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 

se si desidera confrontare le date, ignorando la parte di tempo, fare un uso di DateTime.Year e DateTime.DayOfYear proprietà.

frammento di codice

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"); 
Problemi correlati