我试图使用时间跨度找到两个日期之间的天数。
nextdate1='2014-12-20'
today `='2014-12-18'`
我的示例代码是:
DateTime nexdate1 = dr.GetDateTime(2); //gets from database. I checked and the value is correct
DateTime today = DateTime.Now;
TimeSpan nextdate = nexdate1.Subtract(today);
int difference = nextdate.Days;
现在我得到difference=1
。实际上是difference is 2 (20-18)
。
为什么它显示差异为1?
答案 0 :(得分:4)
TimeSpan.Days
是int
。你的答案会被截断。
在以下代码中:
var date1 = DateTime.Parse("Dec 12, 2014");
var date2 = DateTime.Parse("Dec 14, 2014");
var difference = (date2 - date1).Days;
difference
设置为2。
但是在这段代码中:
var date1 = DateTime.Parse("Dec 12, 2014 12:01 AM");
var date2 = DateTime.Parse("Dec 14, 2014");
var difference = (date2 - date1).Days;
difference
设置为1。
当我们查看时间段date2 - date1
时,我们会得到以下结果:
{1.23:59:00}
Days: 1
Hours: 23
Minutes: 59
Seconds: 0
TotalDays: 1.9993055555555554
您应该设置nextDate = nexdate1.Date.Subtract(DateTime.Today);
,以便仅查看天数差异,或者(int)Math.Round(nextDate.TotalDays)
答案 1 :(得分:1)
实际上你的datetime变量有时间部分,因为那时你的结果会受到影响。因此,您必须只找到日期时间值的日期部分:
这样做:
DateTime nexdate1 = dr.GetDateTime(2);
DateTime today = DateTime.Now;
TimeSpan nextdate = nexdate1.Date.Subtract(today.Date); // Here find only date part from datetime value.
//TimeSpan nextdate = nexdate1-today
int difference = nextdate.Days;