Если вам известен точный формат, вы можете принудительно использовать его с помощью TryParseExact
:
b = DateTime.TryParseExact(sample, "dddd d MMMM yyyy", provider, DateTimeStyles.None, out result);
Однако в вашем случае это не работает.Чтобы найти проблему, давайте попробуем наоборот:
Console.WriteLine(expected.ToString("dddd d MMMM yyyy", provider));
И результат «الأربعاء 16 مارس 2011», который (вы, вероятно, читаете это лучше меня) отличается от вашего ввода одним символом: .NET использует (и ожидает) Хамза, ваш вклад не имеет его.Если мы изменим ввод таким образом, все будет работать:
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);