我不确定我遇到的问题是因为对 Umm al-Qura 日历中日期时间的工作方式缺乏了解,还是因为它是一个错误。
基本上,我正在编写一个测试,以确保内部实用程序类正确解析值,而不管当前的文化如何。
在下面的代码中,目标是让dt1等于dt2。
public void ArabicTesting()
{
CultureInfo culture = new CultureInfo("ar");
// Initialize a new datetime (04/01/2048 06:21:01 AM)
DateTime dt1 = new DateTime(2048, 4, 1, 6, 21, 1);
// Convert the datetime to a string using arabic cultureinfo
// string ends up being "17/06/70 06:21:01 ص,"
string dt2_string = $"{dt1.ToString(culture.DateTimeFormat.ShortDatePattern)} {dt1.ToString(culture.DateTimeFormat.LongTimePattern)}";
// Parse the string
DateTime dt2;
DateTime.TryParse(dt2_string, culture, DateTimeStyles.None, out dt2);
}
问题是DateTime.TryParse将日期时间作为字符串解析为看起来相同但值与预期不同的日期时间。
以下是一些正在发生的事情的屏幕截图:
如果同时查看dt1和dt2预览值,它们看起来是相同的“17/06/70 06:21:01 ص”,但是对象的实际值完全不同。
有人知道这是否是 MS 错误,还是因为我没有将正确的字符串值传递给DateTime.TryParse方法?