Есть ли лучший способ .net проверить, произошло ли DateTime «сегодня», чем код ниже?
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
}
Ответы:
Должен сделать свое дело.
источник
источник
Пытаться
источник
Мое решение:
источник
Если NewsStory также использовала DateTime, просто сравните свойство Date, и все готово.
Однако это зависит от того, что на самом деле означает «сегодня». Если что-то будет опубликовано незадолго до полуночи, через короткое время оно станет «старым». Так что, возможно, было бы лучше сохранить точную дату истории (включая время, предпочтительно UTC) и проверить, прошло ли менее 24 часов (или чего-то еще), что просто (даты можно вычесть, что дает вам TimeSpan с TotalHours или свойство TotalDays).
источник
Вы можете реализовать метод расширения DateTime.
Создайте новый класс для ваших методов расширения:
И теперь везде в вашем коде, где вы хотите выполнить этот тест, вы должны включить using:
А затем используйте метод расширения:
источник
Date
, так какTimeSpan
всегда будет 00:00:00.FYI,
newsStory.Date == DateTime.Today
вернет тот же результат сравнения, что и кодирование
newsStory == DateTime.Today
где
newsStory
являетсяDateTime
объектом.NET достаточно умен, чтобы определить, что вы хотите сравнивать, только на основе даты и использует это для внутреннего сравнения. Не уверен, почему, и на самом деле возникают проблемы с поиском документации для этого поведения.
источник
Как Гийам предложил в комментарии , сравните значения
Date
свойств:источник
Попробуй это:
источник
ну, у DateTime есть свойство Date, и вы можете просто сравнивать на его основе. Но, глядя на документы, кажется, что получение этого свойства фактически создает новый экземпляр datetime с компонентом времени, установленным на полночь, поэтому он вполне может быть медленнее, чем доступ к каждому отдельному компоненту, хотя намного чище и удобочитаемее.
источник
if (newsStory.ToShortDateString() == DateTime.Today.ToShortDateString()) return "Todtay";
источник
Как насчет
Но это также будет верно для 1 января 2008 г. и 1 января 2009 г., что может быть или не быть тем, что вы хотите.
источник
вы могли бы использовать
DateTime.Now.DayOfYear
источник