Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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#_Date_Timespan - Fatal编程技术网

C# 两个日期之间的差异?

C# 两个日期之间的差异?,c#,date,timespan,C#,Date,Timespan,我正在计算两个日期之间的差异。这是我目前正在使用的: int currentyear = DateTime.Now.Year; DateTime now = DateTime.Now; DateTime then = new DateTime(currentyear, 12, 26); TimeSpan diff = now - then; int days = diff.Days; label1.Text = days.ToString() + " Days Until Christmas"

我正在计算两个日期之间的差异。这是我目前正在使用的:

int currentyear = DateTime.Now.Year;

DateTime now = DateTime.Now;
DateTime then = new DateTime(currentyear, 12, 26);
TimeSpan diff = now - then;
int days = diff.Days;
label1.Text = days.ToString() + " Days Until Christmas";

除了休息一天外,一切正常。我认为这是因为它不包括任何少于一天24小时的时间。有没有办法让它这样做?谢谢。

这个问题很有哲理;如果圣诞节是明天,你认为是1天,还是0天。如果你把明天算进去,答案是0

如果更换以下部件,您的问题就会消失:

int days = (int)Math.Ceiling(diff.TotalDays);
DateTime.Now
与:

DateTime.Today

因为您的差异计算将在整天内工作。

我通常使用以下代码来获得所需输出单元的预期输出:

        DateTime[] dd = new DateTime[] { new DateTime(2014, 01, 10, 10, 15, 01),new DateTime(2014, 01, 10, 10, 10, 10) };

        int x = Convert.ToInt32((dd[0] - dd[1]).TotalMinutes);

        String unit = "days";

        if (x / 60 == 0)
        {
            unit = "minutes";
        }

        else if (x / 60 / 24 == 0)
        {
            unit = "hours";
            x = x / 60;
        }

        else
        {
            x = x / (60 * 24);
        }

        Console.WriteLine(x + " " + unit);

无法将类型“double”隐式转换为“int”。存在显式转换(是否缺少转换?)int days=Convert.ToInt32(Math.天花(diff.TotalDays));哎呀,假设数学。上限返回整数。。。现在我想起来有点傻了为什么它会在几天前返回一个“-”呢?哇,我觉得很傻。我改变了它,然后它返回了错误的天数值,所以我最终使用int days=diff.days;就像我最初做的那样。