[c#] DateTime. 날짜가 30 일 미만인지 확인하는 방법을 비교합니까?

계정이 30 일 이내에 만료되는지 알아 보려고합니다. DateTime Compare를 올바르게 사용하고 있습니까?

if (DateTime.Compare(expiryDate, now) < 30)

{
     matchFound = true;
}



답변

DateTime Compare를 올바르게 사용하고 있습니까?

아니요. Compare두 날짜의 상대적 위치에 대한 정보 만 제공합니다 : 작거나 같거나 큰 날짜. 당신이 원하는 것은 다음과 같습니다.

if ((expiryDate - DateTime.Now).TotalDays < 30)
    matchFound = true;

이것은 두 개의 DateTimes를 뺍니다 . 결과는 속성 TimeSpan을 가진 객체입니다 TotalDays.

또한 조건문은 다음과 같이 직접 작성할 수 있습니다.

matchFound = (expiryDate - DateTime.Now).TotalDays < 30;

if필요 하지 않습니다.


답변

해야한다

matchFound = (expiryDate - DateTime.Now).TotalDays < 30;

총 일수를 기록하십시오. 그렇지 않으면 이상한 행동이 나타납니다.


답변

대신 다음과 같이 할 것입니다.

TimeSpan diff = expiryDate - DateTime.Today;
if (diff.Days > 30)
   matchFound = true;

비교는 첫 번째 날씨가 더 빠르거나 같거나 늦음을 나타내는 정수로만 응답합니다.


답변

대신 이것을 시도하십시오

if ( (expiryDate - DateTime.Now ).TotalDays < 30 ) {
  matchFound = true;
}


답변

비교는보다 큼, 같음,보다 작음에 대해 각각 1, 0, -1을 반환합니다.

원하는 :

    if (DateTime.Compare(expiryDate, DateTime.Now.AddDays(30)) <= 0)
    {
        bool matchFound = true;
    }


답변

정확한 결과를 얻을 수 있습니다.

if ((expiryDate.Date - DateTime.Now.Date).Days < 30)
    matchFound = true;


답변

비교 는 불필요하며 Days / TotalDays 는 불필요합니다.

필요한 것은

if (expireDate < DateTime.Now) {
    // has expired
} else {
    // not expired
}

만기 기준으로 몇 분, 몇 달 또는 몇 년을 사용하기로 결정한 경우이 방법이 작동합니다.