将日历转换为彼此使用NodaTime库

时间:2012-09-20 05:39:34

标签: c# datetime calendar nodatime

我使用Noda Time来处理DateTime问题,我几乎阅读了所有documents但我将日历转换为彼此存在问题,

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

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

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

    那么其他日历系统呢?

  2. 我使用Persian Calendar aka Jalali Calendar,那么有没有办法在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中),有没有办法在一个过程或方法中转换这两个?

2 个答案:

答案 0 :(得分:3)

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

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

  3. 目前尚不清楚“特区”的含义是什么 - 但听起来又像是这样,你需要波斯日历才能真正发挥作用。如果.NET支持波斯日历,您可以先将其解析为DateTime,然后将其转换为Noda Time类型...我很抱歉我们目前不支持波斯语日历,而且我喜欢能够通过包装类型来支持BCL日历(正如我们对TimeZoneInfo所做的那样),但这不会很快,我担心。< / p>

答案 1 :(得分:0)

为了搜索类似关键字的其他人,添加了对波斯语日历的支持(我目前正在使用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());