.net - 포맷 - 액세스 데이터형식




현지화 날짜 형식 설명자 (5)

날짜 형식 설명자를 지역화하는 가장 좋은 방법은 무엇입니까?

mm / dd / yyyy 형식을 사용하지 않는 문화권 사용자라면 누구나이 형식으로 날짜를 입력해야합니다. .NET 프레임 워크는 매우 우수한 현지화 지원을 제공하므로 사용자 문화에 따라 날짜를 파싱하는 것은 쉽지 않지만 필요한 형식에 대한 유용한 힌트를 표시하려는 경우가 많습니다 (특히 yy와 yyyy를 구별하기 위해). 대부분의 문화).

대부분의 사용자에게 이해하기 쉬운 방식으로이를 수행하는 가장 좋은 방법은 무엇입니까 (예 : 대 / 소문자 변경 및 한 글자와 두 글자 간의 전환으로 인해 dd / M / yyy가 혼란 스럽습니다).


국제 표준의 문제는 거의 아무도 그들을 사용하지 않는다는 것입니다. 내가 할 수있는 곳을 시도하지만 실생활의 거의 모든 곳에서 dd / mm / yyyy를 사용하도록 강요 당한다. 나는 ISO-8601을 사용하는 것이 항상 의식적인 과정이라는 사실에 익숙하다는 것을 의미한다. ISO-8601을 사용하려고 시도조차하지 않는 대다수의 사람들에게는 더 나빠집니다. 할 수있는 곳을 국제화 할 수 있다면 큰 이점이라고 생각합니다.


나는 OP DD와 MM / YYYY 양육과 함께 정말로 잘못된 항아리에 동의해야하며, ISO 8601 날짜와 시간은 매우 쉽게 작업 할 수 있습니다. 일단 표준이 올바르게 만들었고 engtech 는 현지화가 필요없는 확실한 대답을했습니다.

스택 오버플로에 대한 생일 입력 양식을 버그로보고 할 예정이었는데, 이는 대부분의 아픈 엄지 손가락 때문이었습니다.


여기 내 현재 방법입니다. 어떤 제안?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");

짧은 양식은 편리하며 맞춤법 오류를 방지하는 데 도움이됩니다. 해당되는 경우 현지화를 수행하고 예상되는 형식을 표시하십시오 (사용자를 사각 지로 두지 마십시오). 필드 선택 을위한 선택적 보좌관으로 날짜 선택 컨트롤을 제공합니다.

추가로, 날자를 파싱하고 긴 형식으로 날짜를 표시하는 것도 도움이 될 수 있습니다.


최선의 선택 : 표준 날짜 선택 도구를 사용하는 것이 좋습니다.

대안 : 편집 컨트롤의 내용이 변경 될 때마다 날짜의 긴 형식 (예 : 입력 "03/04/09"디스플레이 "사용자 입력 : 2009 년 3 월 4 일")을 구문 분석하고 별도의 컨트롤에 표시합니까? )





globalization