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));
一切都会好起来的。顺便说一句,函数的代码取自这里。