如何在C#中计算两个日期之间的天数?
StartDate
和 EndDate
的类型为 DateTime
:(EndDate - StartDate).TotalDays
(a - b).Days
。 - PFranchise顶部答案是正确的,但如果你只想要整天数作为整数并且可以放弃日期的时间组件,则考虑:
(EndDate.Date - StartDate.Date).Days
再次假设StartDate
和EndDate
是DateTime
类型。
Days
不止于365天(其他属性如Hours
、Minutes
和Second
都有最大值,在下一个更高属性开始之前),它与TotalDays
相同但没有一天的分数,并且返回int
而不是double
。 - Tim Schmelter.Date
部分非常有用。希望我表述清楚了。 - Alex from Jitbit使用TimeSpan对象,该对象是日期相减的结果:
DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);
TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
// Difference in days, hours, and minutes.
TimeSpan ts = EndDate - StartDate;
// Difference in days.
int differenceInDays = ts.Days; // This is in int
double differenceInDays= ts.TotalDays; // This is in double
// Difference in Hours.
int differenceInHours = ts.Hours; // This is in int
double differenceInHours= ts.TotalHours; // This is in double
// Difference in Minutes.
int differenceInMinutes = ts.Minutes; // This is in int
double differenceInMinutes= ts.TotalMinutes; // This is in double
您还可以获取以秒、毫秒和滴答为单位的差异。
如果有人想要将整天数以 double 类型返回(a
和 b
为 DateTime
类型):
(a.Date - b.Date).TotalDays
关于计算两个日期之间的天数,通常会有一个关于时间(小时)的争论。以下是这个问题的回答和评论。
假设StartDate
和EndDate
都是DateTime
类型:如果性能不是问题,我强烈建议通过中间转换来记录你的计算过程。例如,(EndDate - StartDate).Days
很难理解,因为取整会依赖于StartDate
和EndDate
的小时组成部分。
(EndDate - StartDate).TotalDays
。(EndDate.Date - StartDate.Date).Days
(EndDate.Date-StartDate.Date). Days + 1
你可以尝试这个
EndDate.Date.Subtract(DateTime.Now.Date).Days
使用时间段可以解决问题,因为它具有许多属性:
DateTime strt_date = DateTime.Now;
DateTime end_date = Convert.ToDateTime("10/1/2017 23:59:59");
//DateTime add_days = end_date.AddDays(1);
TimeSpan nod = (end_date - strt_date);
Console.WriteLine(strt_date + "" + end_date + "" + "" + nod.TotalHours + "");
Console.ReadKey();
DateTime
和时间间隔类型TimeSpan
的加减运算符被重载了,就像你所期望的那样。这一切都非常简单明了。-- 你遇到了什么具体问题? - BrainSlugs83