Estoy trabajando en un programa que requiere que se devuelva la fecha de un evento.
Estoy buscando un Date, no un DateTime.
¿Existe un tipo de datos que devuelva solo la fecha?
No, no lo hay. DateTimerepresenta algún punto en el tiempo que se compone de una fecha y una hora. Sin embargo, puede recuperar la parte de la fecha a través de la Datepropiedad (que es otra DateTimecon la hora establecida en 00:00:00).
Y puede recuperar propiedades de fecha individuales mediante Day, Monthy Year.
Creé una estructura de fecha simple para los momentos en que necesita una fecha simple sin preocuparse por la porción de tiempo, las zonas horarias, local frente a utc, etc.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
Desafortunadamente, no en .Net BCL. Las fechas generalmente se representan como un objeto DateTime con la hora establecida en medianoche.
Como puede adivinar, esto significa que tiene todos los problemas relacionados con la zona horaria, aunque para un objeto Date no querría absolutamente ningún manejo de la zona horaria.
fuente
datepara cualquier cosa es una mala idea a menos que esté 100% seguro de que su aplicación solo funcionará en una zona horaria. Guardar todo comodatetimele brinda lo mejor de ambos mundos, incluido el más crítico, una manera fácil de evitar las pesadillas de la zona horaria si la configuración de la zona horaria de su servidor alguna vez cambia ... y comienza a escribir datos de maneras que no anticipaba.Datetimepuede salvarlo allí,dateno puede en absoluto, y será increíblemente difícil de arreglar si alguna vez comienza a escribirdatecon el contexto de zona horaria equivocado.Crea una clase contenedora. Algo como esto:
Y exponga lo
valueque quiera.fuente
DateTimeKind.Unspecifiedque cuando se serialice se deserialice sin convertir (puede cambiar la fecha en función de diferentes zonas horarias).DateTimeKind.Utc. ¡No lo configureDateTimeKind.Unspecifiedporque eso garantizará que se serialice / deserialice con una compensación de zona horaria incluida! Una fecha del calendario es la misma independientemente de la zona horaria, así que no permita que el sistema la ajuste.El tipo de fecha es solo un alias del tipo de fecha y hora utilizado por VB.NET (como int se convierte en Integer). Ambos tipos tienen una propiedad Date que le devuelve el objeto con la parte de tiempo establecida en 00:00:00.
fuente
DateTime tiene una propiedad Date que puede usar para aislar la parte de la fecha. El método ToString también hace un buen trabajo al mostrar solo la parte de fecha cuando la parte de tiempo está vacía.
fuente
El objeto DateTime tiene una propiedad que devuelve solo la parte de fecha del valor.
fuente
DateTimecon la hora establecida en 0:00:00No hay ningún tipo de
Datedatos.Sin embargo, puede usar
DateTime.Datepara obtener solo la fecha.P.EJ
fuente
DateTime.Now.Datees lo mismo queDateTime.Today. Hay unDateTime.UtcNowque devuelve el valor de fecha y hora como hora universal (UTC), pero no hay un método o propiedad equivalente a UTC para Hoy;DateTimeKind.UtcNow.Datees la expresión apropiada.Puede devolver DateTime donde la parte de la hora es 00:00:00 y simplemente ignorarla. Las fechas se manejan como números enteros de marca de tiempo, por lo que tiene sentido combinar la fecha con la hora, ya que de todos modos está presente en el número entero.
fuente
Para esto, debe usar la fecha, pero ignore el valor de la hora.
Normalmente, una fecha sería una fecha y hora con la hora de
00:00:00El
DateTimetipo tiene una.Datepropiedad que devuelve elDateTimecon el valor de tiempo establecido como arriba.fuente
fuente
Puede probar uno de los siguientes:
Pero no hay un tipo de "Fecha" en la BCL.
fuente