您可以始终使用本地的System.Globalization.PersianCalendar .NET类,但这有点棘手。
考虑以下代码,将Jalali日期(此处为1387/03/18)转换为公历DateTime:
System.Globalization.PersianCalendar persianCal = new System.Globalization.PersianCalendar();
DateTime GregorianDate = persianCal.ToDateTime(1387, 3, 18, 12, 0, 0, 0);
使用以下代码将公历日期时间(此处为1983/08/03)转换为波斯日期字符串:
DateTime GregorianDate = DateTime.Parse("1983/08/03");
string FarsiDateConverted = persianCal.GetYear(GregorianDate).ToString("0000") + "/" +
persianCal.GetMonth(GregorianDate).ToString("00") + "/" +
persianCal.GetDayOfMonth(GregorianDate).ToString("00");
提供的链接中,我想强调一下文章作者的话:
“使用JalaiCalendar代替.NET Framework的PersianCalendar的主要目的必须是需要将历史事件的日期转换。如果只想在您的网站上显示当前日期,则使用PersianCalendar就足够了。”
事实上,.NET Framework的算法适用于1178年至1634年的Jalali日历(1799年至2256年的公历)。
更新:
从.NET Framework 4.6开始,PersianCalendar类使用Hijri太阳天文算法而不是观测算法来计算日期。这使得PersianCalendar的实现与伊朗和阿富汗两个最广泛使用波斯历的国家的波斯历一致。因此,如果您使用> 4.6版本的.NET Framework,则不需要其他库来将日期转换为/从波斯历。