2011-10-12 20 views
53

La línea de código DateTime d = DateTime.Today; da como resultado 10/12/2011 12:00:00 AM. ¿Cómo puedo obtener solo la parte de la fecha? Necesito ignorar la parte del tiempo cuando comparo dos fechas.extrae la parte de fecha de DateTime en C#

+0

Hoy también debe dar un resultado 0:00:00. –

+0

@digem: ¿Quiere decir que la medianoche se muestra _ como a las 12AM? Podría ser. No creo que hoy realmente devuelva un valor dependiente de la cultura. –

+0

@Henk: en las culturas inglesas Today.ToString() devuelve ese valor;) – digEmAll

Respuesta

98

DateTime es un tipo de datos que se utiliza para almacenar tanto Date y Time. Pero proporciona propiedades para obtener la parte Date.

Puede obtener la parte de fecha en Date propiedad.

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/aaaa HH: mm") –

+2

[Aquí] (http://stackoverflow.com/a/39316624/2218697) es ** otra solución ** usando 'String.Format', la esperanza ayuda a alguien – stom

29

No hay forma de "descartar" el componente de tiempo.

DateTime.Today es lo mismo que:

DateTime d = DateTime.Now.Date; 

Si sólo desea pantalla sólo la parte de la fecha, sólo tiene que hacer eso - ToString utilizar con la cadena de formato que necesita.

Por ejemplo, utilizando el standard format string "D" (formato de fecha larga especificador):

d.ToString("D"); 
+6

+1: A veces la respuesta es solo un ' .' away –

+0

@Oded. No. Devuelve lo mismo. '10/12/2011 12:00:00 AM'. – Rauf

+0

@Rauf - No puede deshacerse de esa parte. Puede elegir no mostrarlo sin embargo. – Oded

14

Al comparar sólo la fecha de los DataTimes, utilice la propiedad Fecha. Así que esto debería funcionar bien para usted

datetime1.Date == datetime2.Date 
+0

esta es la mejor respuesta. – Adam

+0

+1, esto es relevante para 'fechas de comparación '. otras respuestas son para mostrarlas – roo2

5

se puede utilizar 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 

si desea comparar fechas, haciendo caso omiso de la pieza del tiempo, hacer un uso de DateTime.Year y DateTime.DayOfYear propiedades.

fragmento de código

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"); 
Cuestiones relacionadas