【问题标题】:Convert calendars to each other Use NodaTime library相互转换日历 使用 NodaTime 库
【发布时间】:2012-09-20 05:39:33
【问题描述】:

我使用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 时区和格鲁吉亚日历。例如,Asia/Tehran 时区的 Now(yyyy/MM/dd - HH:mm:ss) 和波斯历是:(1391/06/30 - 10:01:15) 和 Now 是格鲁吉亚语日历和 UTC 是 (2012/09/20 - 05:01:15),那么您的建议是什么?单独的时间根本不重要,但日期,我对此一无所知(在 NodaTime 中),有没有办法在一个过程或方法中转换这两者?

【问题讨论】:

    标签: c# datetime calendar nodatime


    【解决方案1】:
    1. 是的,目前我们只支持这些日历系统。

    2. 不,我们目前不支持波斯历。您可以提出功能请求,但恐怕我们更可能对推出 1.0 感兴趣。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-17
        • 2019-04-05
        • 1970-01-01
        • 2020-05-18
        相关资源
        最近更新 更多