我有一个应用程序,我使用公历DateTime
。最近,我决定让应用程序也使用Julian日历,如果用户需要它(仍然有人使用这个日历)。事情看起来很容易。我可以在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
因为波斯日历不能指定为默认日历 文化日历,在波斯日历中显示日期 需要单独调用其PersianCalendar.GetMonth, PersianCalendar.GetDayOfMonth和PersianCalendar.GetYear方法。
那么,在儒略历中打印日期的最简单方法是什么?
答案 0 :(得分:0)
使用扩展方法:
static class JulianPrinter
{
public static string ToString(this DateTime date, string format, CultureInfo ci, Calendar cal)
{
if (format == "D")
return string.Format("{0}, {1} {2} {3}",
ci.DateTimeFormat.GetDayName(cal.GetDayOfWeek(date)),
cal.GetDayOfMonth(date),
ci.DateTimeFormat.MonthGenitiveNames[cal.GetMonth(date) - 1], //ci.DateTimeFormat.GetMonthName(cal.GetMonth(date)),
cal.GetYear(date));
return "";
}
}
......和:
var calend = new JulianCalendar();
DateTime dt = new DateTime(year, j, i, calend);
string printed = dt.ToString("D", ci, calend);