검색 구문의 일부로 자유 형식의 날짜를 사용하고 있습니다. 문자열에서 날짜를 파싱해야하지만 실제로 지정된 날짜 부분 만 보존합니다. 예를 들어, "2010 년 11 월 1 일"은 특정 날짜이지만 "2010 년 11 월"은 "2010 년 11 월 1 일"에서 2010 년 11 월 30 일까지의 날짜 범위입니다.모든 값을 지정하지 않은 날짜의 구문 분석
불행하게도, DateTime.Parse
과 친구 같은 DateTime
에이 날짜를 구문 분석 :
DateTime.Parse("November 1, 2010") // == {11/1/2010 12:00:00 AM}
DateTime.Parse("November, 2010") // == {11/1/2010 12:00:00 AM}
은 내가 DateTime
의 일부가 실제로 구문 분석하고있는 파서 추측 된 알 필요가있다. 본질적으로, 나는 DateTime.Parse("November, 2010") == {11/-1/2010 -1:-1:-1}
이 필요하다; 그 다음 날 부분이 누락되어 전체 달을 다루는 날짜 범위를 계산할 수 있습니다.
(내부적으로 C#은 날짜를 구문 분석하고 필요한 정보를 보존하는 DateTimeParse
및 DateTimeResult
클래스를 가지고 있지만 공개 인터페이스에 날짜가 되돌아 와서 제거되었습니다. 차라리 반영하지 않을 것입니다. 이 클래스들은 실제로 유일한 경로가 아니면 제외합니다.) DateTime.Parse
은 어떤 형식으로 날짜를 구문 분석했는지 알 수있는 방법이 있습니까? 또는 반환 된 DateTime
에는 지정되지 않은 부품에 대한 자리 표시자가 있습니까? 나는 또 다른 날짜 파서를 사용하는 것에 대해 개방적이지만, 내부 파서만큼 신뢰할 수 있고 로케일 유연성이 좋기를 바랍니다. 미리 감사드립니다.
편집 : 나는 또한 ParseExact
을 시도했지만 Parse
이 처리 할 수있는 모든 형식을 열거하는 것은 거의 불가능한 것처럼 보입니다. 실제로 Parse
은 DateTimeFormatInfo.GetAllDateTimePatterns
에 의해 반환되는 것보다 많은 형식을 허용합니다.이 형식은 제가 알 수있는 정식 소스와 같습니다.
위의 편집을 참조하십시오. ParseExact는 일반 날짜 구문 분석에는 불충분 한 것으로 보입니다. – kevingessner