2009-10-20 13 views
9

Estoy tratando de almacenar una fecha abreviada (mm/dd/aaaa) en un objeto DateTime. El siguiente código a continuación es lo que estoy tratando de hacer; Esto incluye el tiempo (12:00:00 AM), que no quiero :(Almacenar una fecha corta en un objeto DateTime

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

resultado será: 10/19/2009 12:00:00 AM

Respuesta

17

DateTime es un número entero interpretado para representar ambas partes de DateTime (es decir, fecha y hora). Siempre tendrá fecha y hora en DateTime. Lo sentimos, no hay nada que puedas hacer al respecto.

Puede usar .Fecha para obtener la parte de la fecha. En estos casos, el tiempo siempre será 12:00 pero puede ignorar esa parte si no la quiere.

+0

Ídem. Además, las cadenas de formato de fecha esencialmente le permiten ignorar las partes que no le interesan. Por ejemplo, compare dos fechas usando la misma cadena de formato '{MM/dd/aaaa}' y no use la hora. Tenga en cuenta que en realidad estamos comparando cadenas pero pretendemos que estamos comparando objetos de fecha. – radarbob

+0

@radarbob: casi. En realidad estamos comparando números enteros que se han analizado a partir de un entero más largo, pero el espíritu de lo que dices es correcto. – Dinah

3

En lugar de .Now puede utilizar .Today que no eliminará la parte de tiempo, sino que solo llenará la parte de fecha y dejará el tiempo en el valor predeterminado

Más adelante, como otros señalaron, debe intentar que la parte de fecha ignore la parte de tiempo, dependiendo en la situación.

+0

DateTime.Today.ToShortDateString() todavía tiene la hora como 12:00:00 AM – mezoid

+0

Sí, tiene razón. Proporcioné más información. – Petros

3

Solo tiene dos opciones en esta situación.

1) Ignore la parte del tiempo del valor.

2) Cree una clase contenedora.

Personalmente, me inclino opción de utilizar 1.

3

una fecha y hora siempre tendrá un componente de tiempo - incluso si es 12:00:00 AM. Solo debe formatear DateTime cuando lo muestre (por ejemplo, goodDateHolder.ToShortDateString()).

0

El objeto DateTime almacena la fecha y la hora. Para mostrar solo la fecha, usaría el método DateTime.ToString (cadena).

DateTime goodDateHolder = DateTime.Now; 
// outputs 10/19/2009 
Console.WriteLine(goodDateHolder.ToString("MM/dd/yyyy")); 

Para obtener más información sobre el método ToString, siga este link

+1

En la mayoría de los casos, es mejor usar ToShortDateString para que el componente de fecha use el formato localizado. –

0

Usted podría no ser capaz de obtener como un objeto DateTime ... pero cuando se quiere mostrar que puede darle formato en el forma en que quieres haciendo algo como.

myDateTime.ToString ("M/d/yyyy") que da 19/10/2009 para su ejemplo.

0

Siempre obtendrá la porción de tiempo en un tipo de fecha y hora.

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

le dará la fecha de hoy pero siempre mostrará la hora de la medianoche.

Si usted está preocupado acerca del formato, entonces sería intentar algo como esto

goodDateHolder.ToString("mm/dd/yyyy") 

para obtener la fecha en el formato que desee.

Este es un buen recurso msdn-dateformat

0

DateTime es simplemente un UInt64 con un formato útil e inteligente envuelto alrededor de él para hacer que aparece como una cita más un tiempo.No puedes eliminar el elemento de tiempo.

1

También puede consultar Noda Time basado en la biblioteca Java Joda Time.

Cuestiones relacionadas