나는 문제가 Umm al-Qura 달력에서 datetime의 작동 방식에 대한 이해가 부족하거나 버그인지 여부가 확실하지 않습니다.아라비아 문화 datetime 파싱이 예상 값을 반환하지 않음
기본적으로 내부 유틸리티 클래스가 현재 문화권에 관계없이 값을 올바르게 구문 분석 할 수 있도록 테스트를 작성하고 있습니다.
아래 코드에서 목표는 dt1은 dt2과 같습니다.
public void ArabicTesting()
{
CultureInfo culture = new CultureInfo("ar");
// Initialize a new datetime (04/01/2048 06:21:01 AM)
DateTime dt1 = new DateTime(2048, 4, 1, 6, 21, 1);
// Convert the datetime to a string using arabic cultureinfo
// string ends up being "17/06/70 06:21:01 ص,"
string dt2_string = $"{dt1.ToString(culture.DateTimeFormat.ShortDatePattern)} {dt1.ToString(culture.DateTimeFormat.LongTimePattern)}";
// Parse the string
DateTime dt2;
DateTime.TryParse(dt2_string, culture, DateTimeStyles.None, out dt2);
}
문제는 DateTime.TryParse가 동일하게 나타나는 날짜에 문자열로 날짜를 구문 분석된다이지만, 예상되는 것보다 다른 값을 가지고있다. 여기
은 무슨 일이 일어나고 있는지의 스크린 샷의 커플 : 당신이 모두 DT1 및 DT2 미리 값을 보면이 나타나는 동일한 "17/06/70 06:21:01 ص, ", 그러나 개체의 실제 값은 완전히 다릅니다.
누구나 이것이 MS 버그인지 알 수 있습니까? 아니면 DateTime.TryParse 메서드에 올바른 문자열 값을 전달하지 않았기 때문입니까?
'ShortDatePattern'대신 'LongDatePattern'을 사용하면 어떻게됩니까? 'dt1.ToString (culture.DateTimeFormat.LongDatePattern)} {dt1.ToString (culture.DateTimeFormat.LongTimePattern)} "; ' – Igor
@Igor이 시나리오에서 작동했습니다. - 감사합니다. 나는 여전히 조금 걱정하고 있는데, DateTime의 기본 ToString 메서드가 다른 날짜에 대해 동일한 값을 반환한다는 것이 문제인 것처럼 보입니다. 아랍 문화에서 짧은 날짜 패턴을 사용하는 것이 표준이되어서는 안됩니다. – user2338408