我有以下代码
_intervals = intervalEndTime.Subtract(intervalStartTime).Hours;
intervalEndTime = 2009-11-11 16:00 intervalStartTime = 2009-11-11 08:00
使_intervals包含-8。怎么会变成-8?从16减去8小时应该是8?我可以切换到正8,但有人可以解释这个升技吗?
private int calcIntervalRows()
{
int _intervals = 0;
switch (this.BookingObject.IntervalEntity.IntervalEntityID.Trim())
{
case "DAY":
_intervals = 1;
break;
case "MIN":
_intervals = SplitTime(new TimeSpan(intervalStartTime.Minute - intervalEndTime.Hour, 0, 0), new TimeSpan(this.BookingObject.IntervalValue != null ? this.BookingObject.IntervalValue.Value : 1, 0, 0));
break;
case "HOUR":
_intervals = (int)intervalEndTime.Subtract(intervalStartTime).Hours;
break;
}
return _intervals;
}
alt text http://svevarn.com/que.gif
/ M
答案 0 :(得分:3)
它对我有用:
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2009, 11, 11, 8, 0, 0);
DateTime end = new DateTime(2009, 11, 11, 16, 0, 0);
Console.WriteLine(end.Subtract(start).Hours);
}
}
请检查您的开始/结束时间是否正确。如果您可以创建一个简短但完整的程序,如上所述,但这证明了问题,那将有很大帮助。
答案 1 :(得分:2)
在尝试获取两次之间的差异时,您应该使用TimeSpan.TotalHours(而不是小时),特别是如果它们在不同的日子。
答案 2 :(得分:1)
抱歉,我在LINQPad中尝试了这个并获得了8
DateTime intervalEndTime = DateTime.Parse("2009-11-11 16:00");
DateTime intervalStartTime = DateTime.Parse("2009-11-11 08:00");
var _intervals = intervalEndTime.Subtract(intervalStartTime).Hours;
_intervals.Dump();