계정이 30 일 이내에 만료되는지 알아 보려고합니다. DateTime Compare를 올바르게 사용하고 있습니까?
if (DateTime.Compare(expiryDate, now) < 30)
{
matchFound = true;
}
답변
DateTime Compare를 올바르게 사용하고 있습니까?
아니요. Compare
두 날짜의 상대적 위치에 대한 정보 만 제공합니다 : 작거나 같거나 큰 날짜. 당신이 원하는 것은 다음과 같습니다.
if ((expiryDate - DateTime.Now).TotalDays < 30)
matchFound = true;
이것은 두 개의 DateTime
s를 뺍니다 . 결과는 속성 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
}
만기 기준으로 몇 분, 몇 달 또는 몇 년을 사용하기로 결정한 경우이 방법이 작동합니다.
