string end = txtYear.Text + '-' + txtMonth.Text + '-' + txtDate.Text+" 00:00:00";
DateTime TimeEnd = Convert.ToDateTime(end),
TimeStart = DateTime.Now;
TimeSpan chargetimespan1;
chargetimespan1=TimeEnd-TimeStart;
Resultlabel.Text=chargetimespan1.Days.ToString();
当输入时间是当天时间的明天时与现在的时间差结果还是为0,怎么不是1呢?
首先说明下 datetime不是简单类型的数据(不是int double 。。。)
所以要获得时间之差不应该用减号 应该用 Subtract
Code
其次你认为 1990-1-2 00:00:00 和 1990-1-1 22:00:00的时间之差应该是什么。。。。
TimeSpan 的 Days 以小时计(每24小时为1日),它并不能记录并计算起始、终止时间的实际跨度日(人们认识的天数)。你把 txtDate.Text+" 00:00:00" 改为 txtDate.Text+" 23:59:59" 即可。或者改成你说的 Today (那么你所谓的起始时间便是 00:00:00 而不是 Now 的时间)
@codemo
TimeStart = DateTime.Now;
改成
TimeStart = DateTime.Today;
程序正常
------------------------
你说的改成了Today就正常了,那是因为你TimeEnd-TimeStart中的TimeStart少了时间数据
TimeStart只有日期时间,而没有了详细的时间,所以timeend-timestart结果是大于24小时,就是1天时间,所以你会获取到days值是1
如果你用了DateTIme.Now,那你timeend-timestart结果是小于24小时,那你的days的值是不大于1的,而是0.
原因就是这些
由于没有到24小时,所以为0.
TimeStart 改成这样就可以了。
TimeStart = DateTime.Now.Date;