2012-01-19 2 views
-1

날짜가 3 개월 미만인지 여부를 비교해야합니다.비교 날짜가 3 개월 미만

내가 설치 날짜 얻을 것이다 :

DateTime installdate=DateTime.Parse("1/5/2012 8:12:14 PM"); 
if ((installdate<DateTime.Now.AddMonths(-3))) 
{ 
    // do something 
} 

이이 날짜를 비교하는 가장 좋은 방법입니다?

감사합니다.

+1

나에게 잘 어울립니다 – Jontatas

+1

우선 3 개월 이내에 정확히 무엇을 의미합니까? – CodesInChaos

+0

네, 괜찮습니다. TryParse()를 보라. 답을 더 안전하게하기 때문이다. – svrx

답변

8

몇 가지 유효 또는 무효 인 경우의 유효성을 검사 할 수 있도록 Tryparse가 사용된다 :

  • "오늘 날짜 3 개월 전의 오늘 날짜"가 "오늘 날짜가 3 개월 이상 지났습니다. x "; 당신은 당신이 원하는 정확한 의미를 지니고 있는지 확인해야 할 것입니다.
  • 시간 구성 요소로 무엇을하고 싶은지 고려하십시오. 날짜가이거나 이고 시간이일까요? (현재 시간을 기준으로 상태 평가가 변경 될 것으로 기대하십니까?)
  • 시간대 고려 : "오늘 시스템의 현재 시간대"또는 일부 고정 시간대에 관심이 있습니까?
  • 텍스트 데이터의 소스에 따라해야 가능 사용 DateTime.TryParse 당신은 가능 사용 DateTime.ParseExact 또는 예상되는 형식으로 전달 DateTime.TryParseExact (문화) 기본적으로

, 다양한있다한다 날짜 및 시간 동작과 관련된 모서리 사례 - DateTime, btw 대신 Noda Time 대신에 Noda Time을 사용하면 이러한 모든 것들에 대해 명시 적으로 생각해야합니다.

전나무 t 포인트, 만약 아이디어가 당신이 설치 시간 (또는 비슷한)에서 3 개월의 시험 기간을 얻는 것이라면, 그 대신에 에 3 개월 동안을 추가해야한다고 제안합니다. 나는 몇 가지에 저장하려고 할 것이다

DateTime installationDate = DateTime.Parse("1/5/2012 8:12:14 PM"); 
DateTime trialPeriodEnd = installationDate.AddMonths(3); 
if (trialPeriodEnd > DateTime.Now) 
{ 
    // do something 
} 

당신이 어딘가에 설치 날짜 자신을 저장하고 가정 :

또한 변수 이름을 변경 거라고 및 방법에 의해 중복 괄호 제거 양식은 모호하지 않습니다. 문자열 대신 "틱 (ticks)"값만 저장할 수도 있습니다. 그러나 을 자신이 저장하는 경우이라고 가정하면 TryParse을 사용할 필요가 없습니다. 값을 구문 분석 할 수없는 경우 "bang"으로 이동하는 것이 좋습니다. ParseExact을 사용하고 standard format specifier "o"(왕복) 일 수 있습니다.

-1

사용 TimeSpan는 날짜 차이를 얻을 수 있습니다 :

TimeSpan difference = datetimeEnd - datetimeStart; 
+3

나쁜 생각 - Timespan에는'Months'가 없습니다 - 단지'Days' 만이죠; 우리가 정말 똑똑하다면 –

+0

그래서? 'difference.Days> 90'을 사용하십시오. –

+2

한 달은 반드시 30 일이되는 것은 아닙니다. – CodesInChaos

3
DateTime installdate ; 

      if (DateTime.TryParse("1/5/2012 8:12:14 PM", out installdate)) 
      { 
       if ((installdate < DateTime.Now.AddMonths(-3))) { } 
      } 

매개 변수에 전달 된 날짜에 대해 생각하는

+1

설치 날짜가 가장 작성 가능성이 높기 때문에'Parse'를 사용하는 것이 IMO입니다. 나는 그것을 일반 "내 구성이 손상되었습니다"오류로 간주합니다. 특정 문화의 부재는 훨씬 더 큰 결함 IMO입니다. – CodesInChaos

+0

예. 너가 확실히 맞아. 그러나 어떤 경우라도 오류를 처리하기위한 예방 조치의 요지입니다. – Pankaj

+0

@StackOverflowUser :이 날짜가 합당한 * 예상 * 일 경우 예외가 아닌 올바른 응답이 올바른 것입니다. 'TryParse'는 값이 잘못된 경우 예외적 인 상황이 아닐 때 적합합니다. –