我有一个方法
DateToString(DateTime datetime, string format, CultureInfo cultrueInfo)
{
return datetime.ToString(format, cultureInfo);
}
参数:
datetime: {10/1/2016 12:00:00 AM}
format: "ddd, dd MMM"
cultureInfo: {ar-SA}
但它返回给我“???, 30 ??????”。 10月1日是星期六。为什么我好像是9月30日星期六回来?我这边有什么问题吗?
ar-SA
文化用途UmAlQuraCalendar https://msdn.microsoft.com/en-us/library/system.globalization.umalquracalendar日历。
new CultureInfo("ar-SA").Calendar.Dump(); // System.Globalization.UmAlQuraCalendar
既然你在你的作品中使用了这种文化ToString
方法,它将生成一个基于字符串表示that日历。你can't期望生成“九月”,因为您的文化不使用GregorianCalendar
.
In UmAlQuraCalendar
,您的 DateTiem 将表示为 30-12-1437。
var dt = new DateTime(2016, 10, 1); // Gregorian
var umAlQura = new UmAlQuraCalendar();
umAlQura.GetYear(dt); // 1437
umAlQura.GetMonth(dt); // 12
umAlQura.GetDayOfMonth(dt); // 30
https://www.staff.science.uu.nl/~gent0113/islam/ummalqura_converter.htm https://www.staff.science.uu.nl/~gent0113/islam/ummalqura_converter.htm
这就是为什么:
-
ddd
格式说明符生成 ????? ((Yawm)as-Sabt https://en.wikipedia.org/wiki/Islamic_calendar又名星期六),因为它是缩写的日期名称。
-
dd
格式说明符生成30
正如预期的那样。
-
MMM
格式说明符生成 װר (杜阿尔希贾 https://en.wikipedia.org/wiki/Dhu_al-Hijjah) 因为它是月份名称的缩写。
正如您所看到的,缩写的日期和月份名称在结果中交换了。这大概是一个右到左 https://en.wikipedia.org/wiki/Right-to-left issue.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)