[c#] 오늘 DateTime이 발생하는지 확인하는 방법은 무엇입니까?

DateTime이 ‘오늘’발생했는지 확인하는 더 나은 .net 방법이 있습니까?

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
}



답변

if (newsStory.WhenAdded.Date == DateTime.Today)
{

}
else
{

}

트릭을해야합니다.


답변

if( newsStory.Date == DateTime.Today )
{
    // happened today
}


답변

시험

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


답변

내 솔루션 :

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


답변

NewsStory가 DateTime도 사용하고 있었다면 Date 속성을 비교하기 만하면됩니다.

그러나 이것은 “오늘”이 실제로 의미하는 바에 따라 다릅니다. 자정 직전에 게시 된 내용은 잠시 후 “오래된”상태가됩니다. 따라서 정확한 스토리 날짜 (시간 포함, 가급적 UTC 포함)를 유지하고 24 시간 미만 (또는 기타)이 지 났는지 확인하는 것이 가장 좋을 것입니다. 이는 간단합니다 (날짜를 뺄 수 있으므로 TotalHours가 포함 된 TimeSpan을 얻을 수 있음). 또는 TotalDays 속성).


답변

DateTime 확장 메서드를 구현할 수 있습니다.

확장 메서드에 대한 새 클래스를 만듭니다.

namespace ExtensionMethods
{
    public static class ExtensionMethods
    {
        public static bool IsSameDay( this DateTime datetime1, DateTime datetime2 )
        {
            return datetime1.Year == datetime2.Year
                && datetime1.Month == datetime2.Month
                && datetime1.Day == datetime2.Day;
        }
    }
}

이제 코드의 모든 곳에서이 테스트를 수행 할 위치에 using을 포함해야합니다.

using ExtensionMethods;

그런 다음 확장 방법을 사용하십시오.

newsStory.WhenAdded.IsSameDay(DateTime.Now);


답변

참고로,

newsStory.Date == DateTime.Today

코딩과 동일한 비교 결과를 반환합니다.

newsStory == DateTime.Today

개체 newsStory는 어디에 있습니까DateTime

.NET은 날짜만을 기준으로 비교를 결정하고이를 내부 비교에 사용합니다. 이유를 모르고 실제로이 동작에 대한 문서를 찾는 데 문제가 있습니다.