获取一个文本框以显示2个日期选择器之间的天差

时间:2013-11-04 19:29:34

标签: c#

我有2个日期时间选择器,如果用户选择日期,我想在文本框中显示它们之间的天数。

我的代码存在的问题是它没有给我正确答案,而TimeSpan似乎无效。

当我选择不同的日期时,它会给我回答10.999998008713天而不是11天我不知道我是否需要做数学综合

    private void btnCalc_Click(object sender, EventArgs e)
    {        
          DateTime start = ArrivalDate.Value;
          DateTime finish = DepartureDate.Value;

          TimeSpan numberOfNights = finish-start;
          double TotalDays= numberOfNights.Days;
          txtBoxNum.Text = (numberOfNights.ToString());
   }

   private void ArrivalDate_ValueChanged(object sender, EventArgs e)
   {
       DepartureDate.Value = ArrivalDate.Value.AddDays(1);
   }

   private void DepartureDate_ValueChanged(object sender, EventArgs e)
   {
       if (DepartureDate.Value < ArrivalDate.Value)
       {
           MessageBox.Show("Cannot be less than previous date");
           DepartureDate.Value = ArrivalDate.Value.AddDays(1);
           snip...
       }
   }

2 个答案:

答案 0 :(得分:1)

  

我不知道我是否需要做数学综合

我们也不是。 10.999998008713天是大约10天,23小时,59分59秒。你想把它算作11天吗?如果是这样的话,10天,23小时,59分钟和58秒呢?在某些时候,你将不得不决定10天到11天之间的截止时间。这可能取决于您的业务规则,我们不知道。

此外,numberOfNights.DaysnumberOfNights值的日期组成部分;那么对于2013年11月4日那将是4.您确定这是您想要的吗?您不希望numberOfNights.TotalDays,这是您finishstart之间经过的时间吗?

答案 1 :(得分:0)

这个人做了伎俩

          int TotalDays= numberOfNights.Days;
          txtBoxNum.Text = ((int)Math.Ceiling(numberOfNights.TotalDays)).ToString();