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