2011-03-31 4 views
3

다른 웹 응용 프로그램을 배포 할 때 문제가 있습니다. 동일한 문화권 (pt-BR)을 사용하는 ShortDatePattern과 같은 일부 DateTimeFormat 패턴에 불일치가있는 것으로 보입니다.다른 컴퓨터에서 동일한 culture에 대해 다른 DateTimeFormat

내 개발 컴퓨터 (Windows 7, .NET 4를 설치 한 응용 프로그램, .NET 3.5를 설치 한 응용 프로그램) 및 Windows Server 2008 R2 (.NET 4를 대상으로하는 응용 프로그램) 서버에서 ShortDatePattern은 "dd/MM/yyyy"입니다. 추측.

프로덕션 서버 (Windows Server 2003, .NET 3.5 사용)에서는 "d/M/yyyy"입니다. 그것은 나에게 많은 문제를 일으키고있다.

필자는 패턴을 손으로 설정하여이 문제를 해결할 수 있었지만 날짜를 출력 할 때마다이 작업을하지 않는 것이 좋습니다. 특히 이것은 많은 장소에서 (예를 들어 MVC의 Html.TextBoxFor를 사용하는 곳과 같이) 사소한 일이 될 것이므로 좋은 재 작성이 필요합니다.

한 곳에서 전체 웹 응용 프로그램의 패턴을 변경하는 방법이 있다면 멋질 것입니다.

CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); 
info.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 
System.Threading.Thread.CurrentThread.CurrentCulture = info; 

아이디어가 있으면 파일에서 다음 방법을 시도했습니다.

감사합니다.

답변

2

사실, 위의 코드를 Global.asax 파일의 잘못된 위치에서 사용하려고했습니다.

내가 Application_BeginRequest 방법의 코드를 넣어 전체 aplication에 대한 위해 ShortDatePattern을 무시할 관리 :

protected void Application_BeginRequest() 
{ 
    CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); 
    info.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 
    System.Threading.Thread.CurrentThread.CurrentCulture = info; 
} 
0

(국가 및 언어 옵션으로 이동), 포르투갈어 (브라질)를 선택하고이 형식을 사용자 정의하려면 형식 enter image description here을 확인하십시오.

+2

내 컴퓨터에 그것을 해결할 것입니다 만, 나는 변경할 수 없습니다 서버의 형식 –

0

이 솔루션은 항상 생성자 사용 CultureInfo 객체를 생성하는 것입니다

CultureInfo(string name, bool useUserOverride) 

useUserOverride 매개 변수에 false을 전달하십시오. MSDN에서

:

useUserOverride : 사용자가 선택한 문화를 설정 (true) 또는 기본 culture 설정 (거짓)를 사용할지 여부를 의미하는 부울.

는 기본적으로 지정된 문화 대신 시스템에 정의 된 하나를 사용하는 기본 설정 (분리기, ...)를 사용하는 CultureInfo를 거짓 힘을 사용.

다른 운영 체제가 일부 (작은) 경우에 다른 결과를 생성 할 수 있다고 생각하십시오. 아래 코드를 실행하십시오 (.NET 4.5) :

승 7 생산에
CultureInfo ci = new CultureInfo("it-IT", false); 

String date = DateTime.Now.ToString(ci); 
Console.WriteLine(date); 
Console.WriteLine("Time Separator: " + ci.DateTimeFormat.TimeSeparator); 
Console.WriteLine("Date Separaotr: " + ci.DateTimeFormat.DateSeparator); 
Console.ReadKey(); 

:

29/10/2013 14:12:33 
Time Separator: : 
Date Separaotr:/

승 8 생산에 그것을 실행하는 동안 :

29/10/2013 15.08.43 
Time Separator: . 
Date Separaotr:/
관련 문제