2017-04-26 25 views
0

CultureInfo의 경우 DateTimeFormat.AbbreviatedMonthNames['jan.',... 'dis.']과 같이 .으로 끝나는 배열을 반환합니다.문화 약식 월 이름은 마침표로 끝나기도 함

이것은 빌드 서버에서는 발생하지 않으며 모든 개발자 컴퓨터에서 발생하지는 않습니다. CurrentCulture과 기계 위치/언어가 설정되어있는 것과 상관 관계가없는 것으로 보입니다.

이 테스트는 스페인 문화권을 대상으로하며 스페인어에 대해 CultureInfo을 명시 적으로 작성하는 테스트를 포함합니다. 그래서 나는이 정보가 어딘가에 하드 코드되어 있고 단지 읽히고 있다고 생각했을 것이다. 읽는 중 CultureData.AbbreviatedMonthNames(calendarId).

업데이트 : 시동시 현재 문화권이 en-GB 인 경우 추가 조사에서 다음 마침표가없는 것으로 보입니다. 그것이 있다면 en-US입니다. 명시 적으로 CurrentCulture을 설정하면 시작할 때와 다를 경우 효과가 없습니다.

+1

[여기] (http://stackoverflow.com/q/37354988/579895)에 대한 질문이 있습니다. 내가 할 수있는 것은 내 자신의 abbreviatedmonthnames 컬렉션을 사용하는 것입니다 ... – Pikoh

답변

2

항상이 같은 동일이있을 것입니다, 그래서 당신은 당신의 자신의 AbbreviatedMonthNames 컬렉션을 사용할 수 있습니다

Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy", dtfi)); 

을 또는 현재에서 변경 :

CultureInfo ci = CultureInfo.CreateSpecificCulture("en-US"); 
DateTimeFormatInfo dtfi = ci.DateTimeFormat; 
dtfi.AbbreviatedMonthNames = new string[] { "Jan.", "Feb.", "Mar.", 
               "Apr.", "May.", "Jun.", 
               "Jul.", "Aug.", "Sep.", 
               "Oct.", "Nov.", "Dec.", "" }; 
dtfi.AbbreviatedMonthGenitiveNames = dtfi.AbbreviatedMonthNames; 

그런 다음 다음과 같이 사용할 수 있습니다 스레드 :

System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy"));