Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 减去日期返回负数_C# - Fatal编程技术网

C# 减去日期返回负数

C# 减去日期返回负数,c#,C#,我有以下代码 _intervals = intervalEndTime.Subtract(intervalStartTime).Hours; intervalEndTime=2009-11-11 16:00 IntervalsStartTime=2009-11-11 08:00 使_间隔包含-8。为什么会是-8?从16小时中减去8小时应该是8小时吗?我可以换成正值8,但有人能解释一下吗 private int calcIntervalRows() { i

我有以下代码

_intervals = intervalEndTime.Subtract(intervalStartTime).Hours;
intervalEndTime=2009-11-11 16:00 IntervalsStartTime=2009-11-11 08:00

使_间隔包含-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;
    }
/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);
    }
}
请检查您的开始/结束时间是否正确。如果您可以创建一个简短但完整的程序,如上面所述,但这说明了问题所在,这将非常有帮助。

它对我很有用:

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();

对不起,我在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而不是Hours。

在尝试获取两次之间的差异时,应使用TimeSpan.TotalHours而不是Hours,尤其是在不同的日子。

是否涉及时间旅行?评估中的光标在哪里?如果您在对语句求值之前向我显示这些值,则\u interval中可以包含上一个赋值中的-8。所涉及的两个datetime的datetime类型是什么?如果一个是UTC,另一个是本地的,这就可以解释了。这段代码看起来非常可疑:intervalStartTime.Minute-intervalEndTime.HourAs务实的家伙说,select没有被破坏。有什么更好的可能性-您在减法中发现了错误,或者您的代码中有错误?找到错误。是否涉及时间旅行?评估中的光标在哪里?如果您在对语句求值之前向我显示这些值,则\u interval中可以包含上一个赋值中的-8。所涉及的两个datetime的datetime类型是什么?如果一个是UTC,另一个是本地的,这就可以解释了。这段代码看起来非常可疑:intervalStartTime.Minute-intervalEndTime.HourAs务实的家伙说,select没有被破坏。有什么更好的可能性-您在减法中发现了错误,或者您的代码中有错误?找到bug。