У меня есть приложение, в котором я использую григорианский календарь с DateTime
. В последнее время я решил сделать так, чтобы приложение использовало и юлианский календарь, если пользователь этого требует (все еще есть люди, использующие этот календарь). Поначалу все казалось довольно легко. Я мог бы указать используемый календарь в конструкторе DateTime:
var calend = new JulianCalendar();
DateTime dt = new DateTime(year, j, i, calend);
Я мог бы получить количество дней в каждом месяце и день недели (это, кажется, отличается от григорианского календаря!):
int days = calend.GetDaysInMonth(year, month);
DayOfWeek dayOfWeek = dt.DayOfWeek;
Что меня поразило и обеспокоило, так это вывод DateTime.ToString()
. Вроде печатает дату по григорианскому календарю:
http://msdn.microsoft.com/en-us/library/system.globalization.juliancalendar%28v=vs.71%29.aspx
В настоящее время JulianCalendar не используется ни в одной из культур, поддерживаемых классом CultureInfo; поэтому этот класс можно использовать только для вычисления дат по юлианскому календарю.
http://msdn.microsoft.com/en-us/library/9bksd5y7.aspx
Поскольку персидский календарь не может быть назначен календарем по умолчанию для языка и региональных параметров, для отображения даты в персидском календаре требуются отдельные вызовы его методов PersonCalendar.GetMonth, PersonCalendar.GetDayOfMonth и PersianCalendar.GetYear.
Итак, как проще всего напечатать дату в юлианском календаре?