DateTime.AddDays与Calendar.AddDays

时间:2011-01-25 12:56:20

标签: c# .net datetime calendar globalization

DateTime.AddDaysCalendar.AddDays之间的区别是什么? DateTime类型日历是否独立?

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:7)

我认为DateTime是硬编码的,可以有效地使用格里高利历。

例如,如果您查看DateTime.DaysInMonth,则假设有12个月,而HebrewCalendar则支持13个。

编辑:DateTime的某些方面 适应其他日历,例如this constructor。但是,我相信它只是将它转换为公历:

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

答案 2 :(得分:0)

据我所知,Calendar.AddDays方法返回一个DateTime对象并调用它的函数。

答案 3 :(得分:0)

这个问题的答案非常容易回答。这两个函数没有区别。

Calendar.AddDays也是一个DateTime

DateTime不会扩展该特定功能,它唯一使用的是UTC和本地时间。还应该建议日历不是DateTime对象,它的行为可能不一样,并且似乎不提供获取当前系统时间的方法。

编辑 - 我原本以为你在谈论Web控件,这似乎是一个全球化,允许你显示给定用户群的当前日期和时间做他们声明的操作系统的设置。