¿Existe una mejor manera .net de verificar si se ha producido una fecha y hora 'hoy' que el código a continuación?
if ( newsStory.WhenAdded.Day == DateTime.Now.Day &&
newsStory.WhenAdded.Month == DateTime.Now.Month &&
newsStory.WhenAdded.Year == DateTime.Now.Year )
{
// Story happened today
}
else
{
// Story didn't happen today
}
Respuestas:
Debería hacer el truco.
fuente
fuente
Tratar
fuente
Mi solución:
fuente
Si NewsStory también estaba usando un DateTime, simplemente compare la propiedad Date y listo.
Sin embargo, esto depende de lo que realmente signifique "hoy". Si algo se publica poco antes de la medianoche, será "antiguo" después de poco tiempo. Entonces, tal vez sería mejor mantener la fecha exacta de la historia (incluida la hora, preferiblemente UTC) y verificar si han pasado menos de 24 horas (o lo que sea), lo cual es simple (las fechas se pueden restar, lo que le da un TimeSpan con un TotalHours o propiedad TotalDays).
fuente
Puede implementar un método de extensión DateTime.
Cree una nueva clase para sus métodos de extensión:
Y ahora, en todas partes de su código, dónde desea realizar esta prueba, debe incluir el uso:
Y luego, usa el método de extensión:
fuente
Date
ya queTimeSpan
siempre serán las 00:00:00.FYI,
newsStory.Date == DateTime.Today
devolverá el mismo resultado de comparación que la codificación
newsStory == DateTime.Today
donde
newsStory
esta unDateTime
objeto.NET es lo suficientemente inteligente como para determinar que desea comparar basándose solo en la fecha y lo usa para la comparación interna. No estoy seguro de por qué, y realmente tengo problemas para encontrar documentación para este comportamiento.
fuente
Como sugirió Guillame en un comentario , compare los valores de las
Date
propiedades:fuente
Prueba esto:
fuente
bueno, DateTime tiene una propiedad "Date" y puedes comparar basándote en eso. Pero al mirar los documentos, parece que obtener esa propiedad en realidad instancia una nueva fecha y hora con el componente de hora configurado en medianoche, por lo que puede ser más lento que acceder a cada componente individual, aunque mucho más limpio y legible.
fuente
if (newsStory.ToShortDateString() == DateTime.Today.ToShortDateString()) return "Todtay";
fuente
Qué tal si
Pero esto también será válido para el 1 de enero de 2008 y el 1 de enero de 2009, que puede ser o no lo que usted desea.
fuente
podrías usar
DateTime.Now.DayOfYear
fuente