将日历相互转换使用NodaTime库

我使用Noda Time来处理DateTime问题,我阅读了几乎所有的文档,但是我有一些问题要将日历转换为彼此,

  1. 首先,Noda支持多少个日历?

    正如CalendarSystem所说,只有4个日历:

    a)CopticCalendar / b)GregorianCalendar / c)IslamicCalendar / d)JulianCalendar

    那么其他日历系统呢?

  2. 我使用波斯日历又称Jalali日历 ,所以有没有办法在NodaTime中使用这个日历? 以及如何将其转换为格里高利历?

  3. 我的最终目标是将时间(特殊区域)和日期转换为UTC时区和格鲁吉亚日历。 例如, 现在yyyy/MM/dd - HH:mm:ss )在Asia/Tehran时区和波斯日历是:(1391/06/30 – 10:01:15)和现在在格鲁吉亚日历和UTC是(2012年) / 09/20 – 05:01:15),你的建议是什么? 时间单独根本不重要,但日期,我对它没有任何想法(在NodaTime中),有没有办法在一个过程或方法中转换这两个?

  1. 是的,目前这些是我们支持的唯一日历系统。

  2. 不,我们目前对波斯日历没有任何支持。 你可以提交一个function请求,但我们更有可能有兴趣将1.0打开,我担心。

  3. 目前还不清楚“特殊区域”是什么意思 – 但听起来又像是这样,你需要波斯日历才能真正发挥作用。 如果.NET支持波斯语日历,你可以先将它解析为DateTime ,然后将其转换为Noda Time类型…我很抱歉我们目前不支持波斯语日历,而且我会喜欢能够通过包装类型来支持BCL日历(就像我们为TimeZoneInfo所做的那样),但是恐怕不会很快。

为了搜索类似关键字的其他人,添加了对波斯语日历的支持(我目前正在使用v1.3)。

某些日历有更多设置,因此简化了此示例:

  var now = DateTime.Now; var nodaNow = new NodaTime.LocalDate(now.Year, now.Month, now.Day); var cal = nodaNow.WithCalendar(CalendarSystem.GetPersianCalendar()); Console.WriteLine(cal.ToString());