Dizeleri ingilizce olmayan dillerde olan DateTime nesnelerine dönüştürmem gerekiyor. DateTime'ı diğer dillerdeki dizelere dönüştürmenin birçok örneğini gördüm, ancak başka bir şekilde değil.Arapça gibi İngilizce olmayan diller için DateTime.TryParse() öğesini nasıl kullanırım?
Bu işe görünmüyor:
CultureInfo provider = new CultureInfo("ar-AE"); // Arabic - United Arab Emirates
string sample = "الاربعاء 16 مارس 2011"; // Arabic date in Gregorian calendar
DateTime result;
DateTime expected = new DateTime(2011, 3, 16); // the expected date
bool b;
b = DateTime.TryParse(sample, provider, DateTimeStyles.None, out result);
Assert.IsTrue(b);
Assert.AreEqual(expected, result);
Ayrıca, ben diğer takvimler olan dizeleri işlemek gerekir. Ben de denedim ve işe yaramıyor.
CultureInfo provider = new CultureInfo("ar-AE"); // Arabic - United Arab Emirates
provider.DateTimeFormat.Calendar = new System.Globalization.HijriCalendar();
// Wednesday, March 16, 2011, 11 Rabi second in 1432
string sample = " 11 ربيع ثاني 1432 ";
DateTime result;
DateTime expected = new DateTime(2011, 3, 16); // ?
bool b;
b = DateTime.TryParse(sample, provider, DateTimeStyles.None, out result);
Assert.IsTrue(b);
Assert.AreEqual(expected, result);
Neyi eksik?
Arapça unicode normalleştirme (ya da benzer bir şey) ile küçük bir sorun olduğunu düşünüyorum ... Bence "Çarşamba" sözcüğü iki şekilde yazılabilir ... Eğer bekleniyorsa deneyin.ToString ("ddd dd MMMM yyyy ", sağlayıcı) dizenin aynı göründüğünü göreceksiniz, ama ikili eşit değil. 2. karakteriniz 0x0627 (ARAPÇA MEKTUP ALEF), ToString biri 0x0623 (HAMZA ABOVE İLE ARAPÇA MEKTUP ALEF). Arap bir şey bilmiyorum ama umarım bu size yardımcı olur. – xanatos