2015-12-14 159 views
0

我有两个日历,一个供用户选择开始日期,另一个供结束日期使用。我想获取两个日期之间差异的值来显示天数。MVC获取日历开始日期和结束日期之间的天数

  decimal period = Convert.ToDecimal((currentApplication.StartDate.Value - currentApplication.EndDate.Value).TotalDays); 
      currentApplication.NoOfDays = period; 

它可以工作但天数不准确。

22/12 to 22/12 is displayed as 1.00

22/12 to 23/12 is displayed as -1.00

22/12 to 24/12 is displayed as -1.00

我以为使用.TotalDays会是正确的,但值不准确。我错误地使用了它还是.TotalDays不是用于这种方式?

+0

你在期待什么? – Mairaj

+0

@MairajAhmad我认为它会显示确切的天数。如22/12至23/12将是2天,22/12至24/12将是3天。 –

+0

只要做到这一点'currentApplication.EndDate.Value - currentApplication.StartDate.Value' – Mairaj

回答

0

如果使用.TotalDays时的天数是不准确的,那么你可以使用Timespan让你的天数。

TimeSpan tSpan = (currentApplication.EndDate.Value).Subtract(currentApplication.StartDate.Value); 
currentApplication.NoOfDays = tSpan.Days; 

注:请确保currentApplication.StartDate.ValuecurrentApplication.EndDate.Value日期时间

+0

谢谢!它现在有效:> –

0

尝试;

decimal period = (currentApplication.startDate.Date - currentApplication.endDate.Date).TotalDays 
+0

你好,我试过了,但我得到了以下错误:Error 'System.Nullable '没有包含'Date'的定义,也没有包含接受'System'的第一个参数的扩展方法'Date' .Nullable '可以找到(你是否缺少使用指令或程序集引用?) –

+0

@CucumberNinja是currentApplication有效的日期时间字段? – Dez79

0

我假设startDateendDateNullable<DateTime>类型。 您应该先检查HasValue是否存在Value。这段代码应该适合你。

if(currentApplication.StartDate.HasValue && currentApplication.EndDate.HasValue) 
{ 
      currentApplication.NoOfDays = (currentApplication.EndDate.Value.Date - currentApplication.StartDate.Value.Date).Days; 
} 
相关问题