2017-02-23 1 views
2

MSDN에 따르면 정적 속성 DateTimeFormatInfo.InvariantInfo "은 문화권에 독립적 인 (고정)"이라는 기본 읽기 전용 DateTimeFormatInfo 개체를 가져옵니다.DateTimeFormatInfo.InvariantInfo 일치하지 않는 날짜 패턴?

긴 날짜 패턴은 "dddd, dd MMMM yyyy"이며, 2016 년 2 월 29 일 월요일과 같은 형식입니다.이 형식은 일반적으로 서유럽 대륙에서 사용됩니다.

그러나 짧은 날짜 패턴은 "MM/dd/yyyy"이며 결과는 02/29/2016입니다. 이 형식은 미국에서 일반적으로 사용됩니다.

"s"로 정렬 할 수있는 형식으로 변환하려고하면이 FormatProvider는 정렬 할 수없는 02/29/2016 00:00:00이됩니다.

이 일관성없는 동작은 버그입니까, 아니면 "문화적 독립"에 위배입니까?

+0

나는 en-US 짧은 날짜가 0 자리가 아닌 1 개월 숫자라고 생각합니다. 즉, 그것은 질문을 바꾸지 않는다. –

+0

[소스 코드] (https://referencesource.microsoft.com/#mscorlib/system/globalization/calendardata.cs,045e92053a4b3c84)에서 볼 수 있듯이, 그 이유를 설명하는 설명이 없어도 모두 하드 코딩되어 있습니다. 아마도 // 기본/그레고리 안 미국 캘린더 데이터를 설정하십시오. 따라서 문제는 일관성이 없거나 어쩌면 예상되는 형식에 대한 정의를 찾아야합니다. –

답변

0

나를 위해 표준 행동을 보인다. DateTimeFormatInfo.InvariantInfo는 중립도 아니고 특정한 문화도 의미하지 않지만 모든 문화권 특정 형식으로 변환 할 수있는 형식을 생성합니다. source code에서 볼 수 있듯이 영어 기반이지만 문화적 특성은 아닙니다 (en은 아니지만 en-US). 또한 귀하의 관찰 :

그러나 짧은 날짜 패턴은 02/29/2016 형식이되는 "MM/dd/yyyy"입니다. 이 형식은 미국에서 일반적으로 사용됩니다.

en-US culture ToString ("d")이 2/29/2016 (앞선 없음)을 제공하므로 올바르지 않습니다. 또한 시간은 오전 또는 오후입니다.

관련 문제