2014-10-09 1 views
5

이상한 언어가 있습니다.ToShortDateString이 예상보다 다른 문화적 형식을 반환 함

우리는 Windows XP (32 비트) PC에서 문제없이 올해 초부터 실행되고있는 C# 인터페이스를 가지고 있습니다. 우리는 방금 SCCM에 의해 설치된 응용 프로그램을 사용하여 PC를 Windows 7 (64 비트)로 업그레이드했습니다.

최근 실행 된 텍스트 영역의 날짜가 영국 형식 (2014 년 2 월 5 일) 대신 미국 형식 (2014 년 5 월 2 일)으로 시작되었습니다. 사용되고

코드는 :

FromFormat 소스 데이터 오브젝트이다
string Lines = FromFormat.Text + " from " + FromFormat.Charge_From.ToShortDateString() + " to " + FromFormat.Charge_To.ToShortDateString() +"."; 

, Charge_From & Charge_To DataTime는 변수이다.

우리는 PC의 지역 설정을 확인하고 닷넷에서 PC의 설정이 두 가지가 영국 형식 테스트 애플 리케이션을위한 코드로 설정되어 표시하는 작은 테스트 응용 프로그램을 만들었습니다

label1.Text = DateTime.Now.ToString(); 
label2.Text = DateTime.Now.ToString("dd MMM yyyy"); 
label3.Text = DateTime.Now.ToShortDateString(); 
label4.Text = Thread.CurrentThread.CurrentCulture.EnglishName; 

나는 알고를 ToShortDateString()ToString("dd/MM/yyyy")으로 바꿔 올바른 형식으로 만들 수는 있지만 내 질문은 왜 이런 일입니까?

Windows 7 업그레이드와 관련이 있습니까? 또는 SCCM?

+0

'현재의 문화'는 무엇입니까? 그것은'en-GB' 또는'en-US'입니까? –

+0

_ ToString ("dd/MM/yyyy")을 ToShortDateString()으로 대체하여 올바른 형식을 강제 할 수 있음을 알고 있습니다. "_ 올바르지 않습니다."ToString ("dd/MM/yyyy")'또한 '/'대신 curent culture의 날짜 구분자를 사용하십시오. –

+0

모든 PC가 en-GB를 사용하고 있다고 말할 수 있습니다. – Tony

답변

0

많은 테스트 후와 머리의 긁힘 우리는이에 대한 답을 찾은 것 같아요.

테스트 도중 SCCM (Windows 7 만)을 통해 설치된 인터페이스는 미국 날짜 형식의 텍스트를 생성하지만 Click Once (주로 XP)를 통해 나온 텍스트는 영국 날짜 형식의 텍스트를 생성하는 것으로 나타났습니다.

추가 테스트 결과 Click Once를 통해 Windows 7 PC를 설치 한 경우 영국 날짜 형식의 텍스트가 있음을 확인했습니다.

많은 혼란 끝에 SCCM이 인터페이스를 설치하면 RTM 버전의 보고서 뷰어가 설치되지만 클릭률이 인터페이스를 설치하는 동안 보고서 뷰어의 SP1 버전이 설치되었음을 알게되었습니다.

보고서 뷰어 SP1을 설치하기 위해 SCCM을 변경하고 새 SCCM 설치된 인터페이스 버전을 테스트하고 영국 날짜를 받았습니다.

보고서 뷰어 버전이 PC의 문화 설정 또는 영향을받는 이유는 무엇입니까? 아니면 ToShortDateString()이 작동하는지는 알 수 없지만 문제가있는 것으로 보입니다.

8

ToShortDateString methodCurrentCulture"d" standard date and time format의 동일 ShortDatePattern property 사용하여 사전에

감사합니다.

en-GB 문화재의 ShortDatePattern 속성은 dd/MM/yyyy입니다.

그러나 en-US 문화재의 ShortDatePattern 속성은 M/d/yyyy입니다.

그런 이유로 항상 ToShortDateStringToString("dd/MM/yyyy")으로 대체 할 수 없습니다. 항상 같은 것은 아닙니다. 그리고 "/" Custom Format Specifier은 특별한 의미가 있습니다. 은 나를 현재 문화권 또는 지정된 문화권 날짜 구분자으로 바꿉니다.

ToShortDateString 메서드가 다른 결과를 생성하는 이유는 업그레이드 프로세스에서 지역 설정이 변경된 것으로 의심됩니다.

하지만 당신은 우리에게 당신의 CurrentCulture 말하지 않았기 때문에, 우리는 실제 문제가 무엇인지 모를 ..

+0

지역 설정이 변경된 첫 번째 생각이지만 XP PC의 설정 방법과 동일한 영어 (영국)로 설정됩니다. – Tony

+0

기이 한 일은 PC에서 테스트 프로그램을 실행할 때 PC가 영어 (영국)라고보고하지만 몇 초 후에 인터페이스를 실행하면 en-US 형식으로 날짜가 기록됩니다. 우리는 이미 Windows 7에서 ODBC가 저장/액세스되는 여러 위치가 지역 설정과 비슷한 점을 발견했습니다. – Tony

+0

@ 토니 그럼 당신의'CurrentCulture' 속성은'en-GB'입니까? 귀하의 프로그램에서 실행하고 볼 수 있습니다. –

관련 문제