2012-05-17 5 views
6

C# WinForms 응용 프로그램을 만들었습니다.DateTime 이상한 동작

내 컴퓨터에서

에게 다음 작품 :

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy", null) 

하지만하지 않는이 내 고객의 컴퓨터에서

DateTime.Parse("13/05/2012") 

는 반대입니다.

DateTime.Parse("13/05/2012") 

을하지만 그렇지 않은 :이 작동

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy", null) 

오류 상태 :이 문제에 대한 인터넷에서 정보를 찾기 위해 관리하지 않았다

String was not recognized as a valid DateTime. 

. 이 프로그램은 .Net Framework 4를 사용하며 x86 응용 프로그램입니다. Windows 8 x64를 실행하고 클라이언트는 Windows 7 x64를 실행합니다.

왜 이런 일이 일어나는가에 대한 단서가 있습니까?

감사합니다.

+2

나는 시스템 '은 CultureInfo 날짜 - 시간 형식에 관한 불일치를 의심하지만, 의미를 "작동하지 않는"무엇에 정교한하시기 바랍니다 것입니다. 오류가 발생합니까? 오류 메시지가 무엇입니까? –

+1

@DanJ 그것은 그를 위해 일하지만'ParseExact' 메소드를 사용할 때 클라이언트 컴퓨터에서 "05/13/2012"로 구문 분석합니다. CultureInfo를 확인하는 데 동의합니다. – SimpleVar

+4

ISO'yyyy-MM-dd '형식으로 표준화하는 또 다른 이유. =) – MCattle

답변

12

다른 컴퓨터에서 다른 동작을하는 이유는 서로 다른 문화권에서 실행되기 때문입니다. (ideone)

System.Console.WriteLine(CultureInfo.CurrentCulture); 

출력 (예) :

중 하나는 날짜 분리는 배양 많은 것을 지정

 
en-US 
인 것이 다른 무언가를 출력하는지 모두 컴퓨터 코드 행을 실행 해 . (ideone)

CultureInfo cultureInfo = CultureInfo.InvariantCulture; // or whatever you prefer 
DateTime dateTime = DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", cultureInfo); 

위의 코드는 당신이 사용하는 문이 가정 : 당신은 모든 사용자에 대해 일관된 동작을 원하는 경우, 문화 지정하려고

using System; 
using System.Globalization; 
+4

'mm'은 몇 개월이 아니라 분입니다. 여러분은'MM'을 찾고 있습니다. 당신의보기가 보여주는 것처럼. – Guvante

+0

@Guvante : 고마워, 해결 했어. –

+0

매력처럼 작동했습니다! 고마워요! –

11

주의를; custom date and time format strings에서 mm 지정자는 "개월"이 아니라 "분"을 나타냅니다. 몇 달 동안 MM을 사용해야합니다.

DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture) 
+0

나는 이것을 알지 못했다. 고마워! –