【问题标题】:Get a textbox to display days difference between 2 date pickers获取一个文本框以显示 2 个日期选择器之间的天数差异
【发布时间】:2013-11-04 19:29:34
【问题描述】:

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

【问题讨论】:

  • 您的问题是什么?
  • 你已经完成了一半。你有一些代码,但你需要一个问题:D
  • 您好,欢迎来到 StackOverflow。你有什么错误吗?如果是,那么您能提一下吗?
  • 我希望我在顶部进行了充分解释,但我被限制在 50 个字以内,所以我无法正确解决我的问题/问题。我有 2 个日期时间选择器,我想显示它们之间的天数如果用户选择日期,则会出现一个文本框..我的代码的问题是它没有给我正确的答案,而且时间跨度似乎不起作用..我不知道我哪里出错了,这就是我寻求帮助的原因
  • @CliveCarl,我已经编辑了你的问题。标题应该给出一个简短的概述,问题区域是您应该将相关信息添加到问题本身的地方。 Jon Skeet 有一个很棒的清单,可以在 SO (msmvps.com/blogs/jon_skeet/archive/2012/11/24/…) 上提问,或者您可以查看帮助部分 (stackoverflow.com/help)

标签: c#


【解决方案1】:

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

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

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

【讨论】:

  • Dour High Arch 谢谢老兄,我希望它显示 11,但它现在可以工作了.. 都很感激
  • @CliveCarl,既然这个答案对你有帮助,你应该 a) 投票,并且 b) 将其标记为已回答(绿色复选标记)
  • @Nathan Koop,我知道我在这个网站上尝试过投票,但它说“投票需要 15 名声望”,所以在投票和标记为已读方面我无能为力
【解决方案2】:

这个成功了

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多