-4

我有 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...
       }
   }
4

2 回答 2

1

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

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

此外,numberOfNights.Days是您numberOfNights价值的日组成部分;所以对于 2013 年 11 月 4 日,这将是 4。你确定这就是你想要的吗?你不想要,这将是你和numberOfNights.TotalDays之间经过的时间(以天为单位)?finishstart

于 2013-11-04T20:59:52.210 回答
0

这个成功了

          int TotalDays= numberOfNights.Days;
          txtBoxNum.Text = ((int)Math.Ceiling(numberOfNights.TotalDays)).ToString();
于 2013-11-06T03:08:58.020 回答