Класс CultureInfo не поможет вам ни в синтаксическом анализе, ни в форматировании чисел на восточном арабском языке ("٠", "١", "٢", "٣", "٤", "٥", "٦", " ٧ "," ٨ "," ٩ ") или на западно-арабский язык (" 0 "," 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "). Вы должны конвертировать его вручную. Вот небольшая функция, которая сделает это за вас аккуратно:
public string ConvertToEasternArabicNumerals(string input)
{
System.Text.UTF8Encoding utf8Encoder = new UTF8Encoding();
System.Text.Decoder utf8Decoder = utf8Encoder.GetDecoder();
System.Text.StringBuilder convertedChars = new System.Text.StringBuilder();
char[] convertedChar = new char[1];
byte[] bytes = new byte[] { 217, 160 };
char[] inputCharArray = input.ToCharArray();
foreach (char c in inputCharArray)
{
if (char.IsDigit(c))
{
bytes[1] = Convert.ToByte(160 + char.GetNumericValue(c));
utf8Decoder.GetChars(bytes, 0, 2, convertedChar, 0);
convertedChars.Append(convertedChar[0]);
}
else
{
convertedChars.Append(c);
}
}
return convertedChars.ToString();
}
Теперь немного измените ваш код, чтобы он выглядел следующим образом:
string sDate
DateTime dtt = Convert.ToDateTime("19/01/2012");
CultureInfo ci = new CultureInfo("ar-SA");
sDate = ConvertToEasternArabicNumerals(dtt.ToString("dd/MM/yyyy", ci));
И все будет работать отлично.
Кстати, код для функции был взят из здесь .