DateTime.AddDays与Calendar.AddDays

Jar*_*xle 4 .net c# globalization datetime calendar

DateTime.AddDays和之间有什么区别Calendar.AddDays
DateTime的日历独立?

Kon*_*hin 10

DateTime.AddDays只将天数转换为刻度,并将此滴答数添加到日期时间.Calendar.AddDays的默认实现完全相同.但是,由于它是一种虚拟方法,因此可以以更复杂的方式在特定日历中实现,例如:http://codeblog.jonskeet.uk/2010/12/01/the-joys-of-date-时间算术/


Jon*_*eet 7

我认为DateTime有效地使用格里高利历是硬编码的.

例如,如果你看DateTime.DaysInMonth它假设有12个月,而HebrewCalendar支持13.

编辑:有一些方面DateTime适应其他日历,如此构造.但是,我相信它只是将它转换为公历:

Calendar calendar = new HebrewCalendar();
DateTime dt = new DateTime(5901, 13, 1, 0, 0, 0, calendar); // Uses month 13!
Console.WriteLine(dt.Year); // 2141
Console.WriteLine(dt.Month); // 9
Run Code Online (Sandbox Code Playgroud)