【问题标题】:Subtracting two dates减去两个日期
【发布时间】:2012-06-07 23:05:58
【问题描述】:

我有两个日历,每个日历都从 calendar.SelectedDate 返回一个 DateTime。

如何将两个选定的日期相减,得出两个选择之间的天数?

有一个 calendar.Subtract(),但它需要一个 TimeSpan 而不是 DateTime。

【问题讨论】:

    标签: c# datetime calendar timespan


    【解决方案1】:

    只需使用:

    TimeSpan difference = end - start;
    double days = difference.TotalDays;
    

    请注意,如果您想将它们视为日期,您可能应该使用

    TimeSpan difference = end.Date - start.Date;
    int days = (int) difference.TotalDays;
    

    这样你就不会根据时间得到不同的结果。

    (如果需要,可以使用Subtract 方法代替- 运算符,但我个人觉得使用运算符更清晰。)

    【讨论】:

    • 纠正 SkeetCode(tm) 是一个大胆的人。干得好 Bhushan。
    【解决方案2】:

    想一想。
    你如何表达两个日期之间的差异?与另一个约会?
    这就是您需要 TimeSpan 的原因

    DateTime dtToday = new System.DateTime(2012, 6, 2, 0, 0, 0);
    DateTime dtMonthBefore = new System.DateTime(2012, 5, 2, 0, 0, 0);
    TimeSpan diffResult = dtToday.Subtract(dtMonthBefore);
    Console.WriteLine(diffResult.TotalDays);
    

    【讨论】:

    • 其实使用 TimeSpan 来表示两个日期之间的差异存在各种问题,但在 this 的情况下没关系 :)
    • 感谢您的所有意见。实际上我只需要一天,我没有看到 Subtract 方法也可以采用 DateTime 参数,这意味着我需要的只是: untilCalendar.SelectedDate.Subtract(fromCalendar.SelectedDate).Days
    • @sd_dracula:你肯定更喜欢使用Subtract 方法而不是运算符吗?
    【解决方案3】:

    你可以使用someDateTime.Subtract(otherDateTime),这会返回一个TimeSpan,它有一个TotalDays属性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多