【发布时间】:2012-06-07 23:05:58
【问题描述】:
我有两个日历,每个日历都从 calendar.SelectedDate 返回一个 DateTime。
如何将两个选定的日期相减,得出两个选择之间的天数?
有一个 calendar.Subtract(),但它需要一个 TimeSpan 而不是 DateTime。
【问题讨论】:
标签: c# datetime calendar timespan
我有两个日历,每个日历都从 calendar.SelectedDate 返回一个 DateTime。
如何将两个选定的日期相减,得出两个选择之间的天数?
有一个 calendar.Subtract(),但它需要一个 TimeSpan 而不是 DateTime。
【问题讨论】:
标签: c# datetime calendar timespan
只需使用:
TimeSpan difference = end - start;
double days = difference.TotalDays;
请注意,如果您想将它们视为日期,您可能应该使用
TimeSpan difference = end.Date - start.Date;
int days = (int) difference.TotalDays;
这样你就不会根据时间得到不同的结果。
(如果需要,可以使用Subtract 方法代替- 运算符,但我个人觉得使用运算符更清晰。)
【讨论】:
想一想。
你如何表达两个日期之间的差异?与另一个约会?
这就是您需要 TimeSpan 的原因
DateTime dtToday = new System.DateTime(2012, 6, 2, 0, 0, 0);
DateTime dtMonthBefore = new System.DateTime(2012, 5, 2, 0, 0, 0);
TimeSpan diffResult = dtToday.Subtract(dtMonthBefore);
Console.WriteLine(diffResult.TotalDays);
【讨论】:
Subtract 方法而不是运算符吗?
你可以使用someDateTime.Subtract(otherDateTime),这会返回一个TimeSpan,它有一个TotalDays属性。
【讨论】:
Subtract() 传递给TimeSpan,它将返回DateTime。 msdn.microsoft.com/en-us/library/ae6246z1%28v=vs.110%29.aspx