【发布时间】:2020-04-01 17:27:06
【问题描述】:
我在 Windows 10 上使用 Hijri 日历。我正在开发一个 C# 程序,我尝试使用 DateTime.Now 来获取 AD 日期,但它给了我 Hijri 日期。
那么,我怎样才能得到 AD 日期,而不是回历日期?
我必须将回历转换为公元日期吗?
【问题讨论】:
我在 Windows 10 上使用 Hijri 日历。我正在开发一个 C# 程序,我尝试使用 DateTime.Now 来获取 AD 日期,但它给了我 Hijri 日期。
那么,我怎样才能得到 AD 日期,而不是回历日期?
我必须将回历转换为公元日期吗?
【问题讨论】:
DateTime 本身是始终公历 - DateTime.Year 等将始终返回公历中的值。
不过,ToString 方法将考虑其用于格式化的文化的默认日历。该文化是(默认情况下)当前线程文化。
这里的正确答案取决于您是否要将当前的线程文化用于格式化的其他方面。
如果您想要区分文化的格式(因为您直接向用户显示),您可以克隆文化并将克隆中的DateTimeFormat.Calendar 设置为GregorianCalendar,然后将克隆传递给@ 987654326@方法。
如果您真的想使用文化不变的格式(因为这是机器可读的,例如在 JSON 文档中),只需将 CultureInfo.InvariantCulture 传递给 ToString。
(如果您真的担心它在调试器中的格式,我不确定最佳答案...)
【讨论】: