在 windows 10 中获取公历日期而不是回历日期

Getting Gregorian date not Hijri date in windows 10

我在 windows 10 上使用回历。我正在开发 C# 程序,我尝试使用 DateTime.Now 获取公元日期,但它给了我回历日期。

那么,我怎样才能得到公元日期,而不是回历日期呢?

我必须将回历转换为公元日期吗?

DateTime 本身是 始终 公历 - DateTime.Year 等将始终 return 公历中的值。

但是,ToString 方法 考虑到它用于格式化的文化的默认日历。该区域性(默认情况下)是当前线程区域性。

此处的正确答案取决于您是否要将当前线程文化用于格式化的其他方面。

如果您想要区分文化的格式(因为您直接向用户显示此内容),您可以克隆文化并将克隆中的 DateTimeFormat.Calendar 设置为 GregorianCalendar,然后将克隆传递给 ToString 方法。

如果您真的想使用文化不变格式(因为这是机器可读的,例如在 JSON 文档中)只需将 CultureInfo.InvariantCulture 传递给 ToString

(如果您真的担心它在调试器中的格式,我不确定最佳答案...)