我正在回答我的问题,并提供案例... 我的规范,我需要这样的日期
我尝试过
上述问题未能按预期运行,
这浪费了我的时间...周围的任何代码都可以解决我的问题?
答案 0 :(得分:0)
我认为最好通过使用日期格式来实现此功能,然后自定义其无法处理的数字格式来更好地处理。从其他有关正确格式化数字的答案中,直接访问数字更加容易。但是在这种情况下,我们可以直接使用所需的文化。
Predicate
答案 1 :(得分:-1)
首先,我是C#入门者,因此,如果对代码进行了编辑,请张贴并进行优化。
通过阅读并尝试代码,(顺便说一句,很老的帖子在这里和那里!) 在提到 عرض الوقت والتاريخين الهجري والميلادي في برنامجك سي شارب
我开始更清楚地阅读问题,
案例1
在行下使用时,我得到 1441محرم24
DateTime.Now.ToString("yyyy MMMM dd", new System.Globalization.CultureInfo("ar-SA"))
现在要密切注意 MMMM 和 ar-SA ,以显示称为محرم的月份。
问题出在这里,您会用英语获得 1441 !
所以
案例2
为了使这一行更进一步,我使用了转换为阿拉伯数字的方法... 该代码应将任何数字更改为阿拉伯语/印地语字符集...
public static 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();
}
组合代码:
DateHelper.ConvertToEasternArabicNumerals(DateTime.Now.ToString("yyyy MMMM dd", new System.Globalization.CultureInfo("ar-SA")));