减去日期返回负
问题描述:
我有以下代码减去日期返回负
_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
答
它为我的作品:
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);
}
}
请检查您的开始/结束时间是圆的正确途径。如果你可以创建一个简短但完整的程序,但是这样可以证明问题,那将会有很大的帮助。
答
对不起,我在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();
答
您应该使用TimeSpan.TotalHours(而不是小时)。
+0
+1这是一个常见而容易犯的错误 – 2009-11-11 16:07:48
是否有时间旅行? – 2009-11-11 15:11:27
你的光标在评估中的哪里?如果您在评估报表之前将值显示给我,_intervals可能会从之前的任务中得到-8。 – 2009-11-11 15:52:52
什么是涉及到的两个DateTimes的DateTimeKind?如果一个是UTC,另一个是本地的,那可以解释它。 – 2009-11-11 16:14:37