developer tip

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

copycodes 2020. 10. 13. 07:56
반응형

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
}

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


에 할당 false(해당되는 경우) 한다고 가정하면 matchtime더 간단한 작성 방법이됩니다.

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

아니요, 비교 함수는 1, 0 또는 -1을 반환합니다. 두 값이 같을 때 0, -1과 1은보다 작거나 크다는 것을 의미합니다. 저는 그 순서를 믿지만 자주 섞습니다.


아니요, 올바르게 사용하고 있지 않습니다.

자세한 내용은 여기참조 하십시오 .

DateTime t1 = new DateTime(100);
DateTime t2 = new DateTime(20);

if (DateTime.Compare(t1, t2) >  0) Console.WriteLine("t1 > t2"); 
if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2"); 
if (DateTime.Compare(t1, t2) <  0) Console.WriteLine("t1 < t2");

What you want to do is subtract the two DateTimes (expiryDate and DateTime.Now). This will return an object of type TimeSpan. The TimeSpan has a property "Days". Compare that number to 30 for your answer.


No it's not correct, try this :

DateTime expiryDate = DateTime.Now.AddDays(-31);
if (DateTime.Compare(expiryDate, DateTime.Now.AddDays(-30)) < 1)
{
    matchFound = true;
}

Actually none of these answers worked for me. I solved it by doing like this:

  if ((expireDate.Date - DateTime.Now).Days > -30)
  {
    matchFound = true;
  }

When i tried doing this:

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

Today, 2011-11-14 and my expiryDate was 2011-10-17 i got that matchFound = -28. Instead of 28. So i inversed the last check.


// this isn't set up for good processing.  
//I don't know what data set has the expiration 
//dates of your accounts.  I assume a list.
// matchfound is a single variablethat returns true if any 1 record is expired.

bool matchFound = false;
            DateTime dateOfExpiration = DateTime.Today.AddDays(-30);
            List<DateTime> accountExpireDates = new List<DateTime>();
            foreach (DateTime date in accountExpireDates)
            {
                if (DateTime.Compare(dateOfExpiration, date) != -1)
                {
                    matchFound = true;
            }
            }

You can try to do like this:

var daysPassed = (DateTime.UtcNow - expiryDate).Days;
if (daysPassed > 30)
{ 
    // ...
}

참고URL : https://stackoverflow.com/questions/528368/datetime-compare-how-to-check-if-a-date-is-less-than-30-days-old

반응형