50 votos

Cómo comprobar si dos DateTime ' s ocurren el mismo día

¿Hay una mejor manera de .net para comprobar si un DateTime ha producido 'hoy' entonces 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
}

117voto

sharpcloud Puntos 4141
if (newsStory.WhenAdded.Date == DateTime.Today)
{

}
else
{

}

Debe hacer el truco.

9voto

Stephen Newman Puntos 1375

Probar

if (newsStory.Date == DateTime.Now.Date) 
{ /* Story happened today */ }
else
{ /* Story didn't happen today */ }

8voto

pretender Puntos 51

Mi solución:

private bool IsTheSameDay(DateTime date1, DateTime date2)
{
    return (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);
}

6voto

Lucero Puntos 38928

Si jodimos también estaba usando un DateTime, basta con comparar la propiedad fecha y ya está.

Sin embargo, esto depende de qué significa realmente "hoy". Si algo es publicado poco antes de medianoche, será "el viejo" después de un corto tiempo. Así que tal vez sería mejor mantener la fecha exacta de la historia (incluyendo tiempo, preferiblemente UTC) y comprobar si han pasado menos de 24 horas (o lo que sea), que es simple (las fechas pueden restar, que te da un intervalo de tiempo con una propiedad TotalHours o TotalDays).

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X