DateTime. 날짜가 30 일 미만인지 확인하는 방법을 비교합니까?
계정이 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
}
만기 기준으로 몇 분, 몇 달 또는 몇 년을 사용하기로 결정한 경우이 방법이 작동합니다.
에 할당 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)
{
// ...
}
'developer tip' 카테고리의 다른 글
장고에서 현재 언어를 얻는 방법은 무엇입니까? (0) | 2020.10.13 |
---|---|
Perl에서 키가 주어진 배열에서 나온 해시를 어떻게 생성합니까? (0) | 2020.10.13 |
Angular 6 재질 매트 선택 변경 방법 제거 (0) | 2020.10.13 |
Ruby on Rails에서 호스트 이름 또는 IP 가져 오기 (0) | 2020.10.13 |
임베디드 개발에 C ++ 대신 C를 사용하는 이유가 있습니까? (0) | 2020.10.13 |