2011-07-29 3 views
7

클라이언트가 Google 서버에서 Google 응용 프로그램으로 파일을 다운로드하면 응용 프로그램은 yyyy/mm/dd HH:mm:ss 형태로 서버에서 오는 날짜 문자열에 ParseExact을 기록합니다. DateTime.ParseExact 문제 (태국/불교 시대)

혼란을 많이 후, 나는 클라이언트 시스템의 날짜가 19/7/2554이었다 일부 로그에 나타났습니다. 태국에서와 같이 유효한 시간으로 밝혀 지듯이 Windows는 불교 시대의 시스템을 기본으로합니다 (2554 년).

정확한 구문 분석은 문제가 될 수있는 불변의 문화권으로 이루어집니다. ,하지만 문화가 당신이 분석하려고했던 형식을 언급했다고 생각 했나요?

내가 얻을 예외 메시지는 다음과 같습니다 요일은 CultureInfo를 또한 캘린더 정보를 포함

+0

형식에 요일이 전혀 포함되지 않은 것으로 보입니다. 구문 분석하려는 문자열과 구문 분석을 수행하는 코드의 예를 들려 줄 수 있습니까? –

+0

실제로 형식 목록을 지정 하시겠습니까? – V4Vendetta

+0

아, 내 나쁜 놈들, 내가 망 쳤어. 내가 알지도 못하는 또 다른 코드가있다. 로그 파일의 예외 메시지만으로 디버깅하는 것은 꽤 어려웠습니다. DateTime.Parse 오류가 아니라 파섹 (parseexact)이 아닌 것으로 밝혀졌습니다. 나는 PC의 지역을 태국으로 변경하고 그것이 어디에서 죽었는지 정확하게 파악함으로써 문제를 재현 할 수있었습니다. –

답변

1

잘못된 때문에 문자열이 유효한 DateTime로 인식되지 않았습니다. TryParseExact 메서드가 올바른 달력 정보에 액세스 할 수 있으면 날짜를 올바르게 구문 분석 할 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.calendar.aspx

당신이 타이어 CultureInfo를 가진 InvariantCulture은 CultureInfo 그 문화에 대한 기본 달력이 사용됩니다를 교체 할 경우

.

또는,은 CultureInfo를 필요로하지 않는 TryParse 방법의 과부하를 사용할 수 있습니다. 이 경우 사용되는 문화권은 Windows의 사용자 지역 설정에 따라 다릅니다.