왜 DATETIME.TRYPARSE는 실제 연도 문자열이 주어지면 거짓을 반환합니까?

StackOverflow https://stackoverflow.com/questions/1013650

  •  06-07-2019
  •  | 
  •  

문제

아래 코드에서 나는 함수에 stransactionDate = "1999"를 제공하고 있으며 날짜 x/x/1999에 그것을 은밀하게하려고 노력하고 있습니다.

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

문자열이 "1999"라면 항상 슬프게됩니다. 어떤 아이디어?

도움이 되었습니까?

해결책

이와 같은 것을 시도하십시오 (조정하십시오 CultureInfo 그리고 DateTimeStyles 적절하게 :

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)

다른 팁

어때 ...

DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
    // Happy
}
else
{
    // Sad
}

... 또는 그냥 ...

DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy

"1999"는 날짜가 아니고, 1 년입니다. 1/1/1999

또한 시스템 캘린더에서 구문 분석을 시도하는 날짜가 존재하는지 확인하십시오. 당신이 찾을 수있는 것처럼 "2/29/1949"도 캘린더에 존재하지 않았기 때문에 False를 반환 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top