Конвертируйте календари друг в друга Используйте библиотеку NodaTime

Я использую Noda Time для решения DateTime проблем, я прочитал почти все документы, но у меня возникла проблема с преобразованием календарей друг в друга,

  1. Во-первых, сколько календарей поддерживает Noda?

    Как говорит CalendarSystem, всего 4 календаря:

    а) Коптский календарь / б) Григорианский календарь / в) Исламский календарь / г) Юлианский календарь

    а как насчет других календарных систем?

  2. Я использую персидский календарь, также известный как календарь Джалали. Есть ли способ использовать этот календарь в 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), и есть ли способ преобразовать их оба в один процесс или метод?


person Saeid    schedule 20.09.2012    source источник


Ответы (2)


  1. Да, в настоящее время мы поддерживаем только эти календарные системы.

  2. Нет, на данный момент у нас нет поддержки персидского календаря. Вы можете отправить запрос функции, но я боюсь, что мы, скорее всего, будем заинтересованы в выпуске версии 1.0 для начала.

  3. Непонятно, что вы имеете в виду под «особой зоной», но, опять же, вам понадобится персидский календарь, чтобы это действительно работало. Если .NET поддерживает персидский календарь, вы можете сначала разобрать его на DateTime, а затем преобразовать его в тип времени Noda... Мне жаль, что в настоящее время мы не поддерживаем персидский календарь, и я бы хотелось бы иметь возможность поддерживать календари BCL с помощью типов переноса (как мы делаем для TimeZoneInfo), но, боюсь, это будет нескоро.

person Jon Skeet    schedule 20.09.2012

Ради того, чтобы другие искали похожие ключевые слова, была добавлена ​​поддержка персидского календаря (сейчас я использую 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());
person JeroldHaas    schedule 16.02.2015