使用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
。