Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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#_Asp.net - Fatal编程技术网

使用c#作为整数值计算两个日期的差

使用c#作为整数值计算两个日期的差,c#,asp.net,C#,Asp.net,我需要将两个日期之间的天数计算为整数值,到目前为止,我尝试了以下方法: int Days = Convert.ToInt32(CurrentDate.Subtract(DateTime.Now)); int Days = Convert.ToInt32((CurrentDate - DateTime.Now).Days); 但是,这两条语句都没有给出正确的输出。第一个错误是无法将“System.TimeSpan”类型的对象强制转换为“System.IConvertible”类型。第二个是将天

我需要将两个日期之间的天数计算为整数值,到目前为止,我尝试了以下方法:

int Days = Convert.ToInt32(CurrentDate.Subtract(DateTime.Now));

int Days = Convert.ToInt32((CurrentDate - DateTime.Now).Days);
但是,这两条语句都没有给出正确的输出。第一个错误是无法将“System.TimeSpan”类型的对象强制转换为“System.IConvertible”类型。第二个是将
设为0。

已经是
int
值,因此不需要强制转换:

int Days = (CurrentDate - DateTime.Now).Days;
所以我假设0天是正确的。什么是当前日期

如果要根据小时部分对时间跨度进行四舍五入,可以使用以下方法:

public static int DaysRounded(TimeSpan input, MidpointRounding rounding = MidpointRounding.AwayFromZero)
{
    int roundupHour = rounding == MidpointRounding.AwayFromZero ? 12 : 13;
    if (input.Hours >= roundupHour)
        return input.Days + 1;
    else
        return input.Days;
}

int days = DaysRounded(TimeSpan.FromHours(12)); // 1 
试试这个

        DateTime dt1 = DateTime.Now;
        DateTime dt2 = CurrentDtae;

        int result = (int)((dt2 - dt1).TotalDays);

我假设学习者希望使用
TotalDays
,而不是时间跨度中的
Days
部分。编辑:二读时,我想这个问题可能有点模棱两可。@ChrisSinclair:除了
已经是
整数
?如果时间跨度是1年2天,那么
。天
将是
2
,而不是
367
TotalDays
将返回不同的结果。噢,哇,我完全错了。我以为
Days
只报告了年后的值,但它没有。它只是预先截断与
TotalDays
相同的值。别理我,我觉得自己像个傻瓜。:)@ChrisSinclair:当前日期可以是任何日期,因为我正在从日历控件中选择该日期,它可以是今天、明天或任何日期。您对
当前日期使用的值是什么?零是否可能是正确答案?@Learner:在调试的情况下运行它,并再次检查
CurrentDate
的值。还可以考虑,你的<代码> TimeSpA差值不到24小时。所以你可能会在9月17日下午1点和9月18日上午10点。在这种情况下,我非常确定
Days
将报告
0
。编辑:在这种情况下,请尝试比较
CurrentDay.Date
DateTime.Now.Date