您始终可以使用本机 System.Globalization.PersianCalendar .NET 类。但这有点棘手。
考虑将这段代码从 Jalali Date(此处为 1387/03/18)转换为 Gregorian 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");
只是@Dan Bailiff 提供的链接的注释我应该重复文章作者的话:
“使用这个 JalaiCalendar 代替 .NET Framework 的 PersianCalendar 的主要目的必须是需要对历史事件进行日期对话。如果您只想在您的网站中显示当前日期,PersianCalendar 就足够了。”
事实上 .NET Framework 的算法对于 1178 年到 1634 年 Jalali(1799 到 2256 公历)是正确的
更新:
从 .NET Framework 4.6 开始,PersianCalendar 类使用回历太阳天文算法而不是观测算法来计算日期。这使得 PersianCalendar 实现与伊朗和阿富汗使用的波斯历保持一致,这两个国家使用波斯历最广泛。因此,如果您使用 >4.6 版本的 .NET Framework,则不需要任何其他库来将日期与波斯日历相互转换。