【问题标题】:Calculating the difference in days of two dates stored in ajax calendar extender controls计算存储在 ajax 日历扩展器控件中的两个日期的天数差
【发布时间】:2017-10-27 09:13:17
【问题描述】:

我正在寻找链接到两个单独文本框的两个 ajax 日历扩展器的天数差异。

Dim dt1 As DateTime = Convert.ToDateTime(CalendarExtender1.SelectedDate)
Dim dt2 As DateTime = Convert.ToDateTime(CalendarExtender2.SelectedDate)
Dim diffInDays As Integer = dt2.Subtract(dt1).Days

Label12.text = "The dates are " + diffInDays.ToString() + "days appart."

我之前已经使用 asp 日历控件完成了此任务,但在尝试使用 ajax 日历扩展来实现此任务时遇到了问题。

标签输出表明“这两个日期相隔 0 天”对于许多测试日期。

如果有人可以提供任何指导/帮助或让我知道我哪里出错了,我将不胜感激。
谢谢!

【问题讨论】:

  • 你假设的第二个日期总是在第一个日期之后。

标签: asp.net ajax vb.net calendar ajaxcontroltoolkit


【解决方案1】:

使用 TimeSpan 对象:)

Hack 示例:

Sub Main()
    Console.WriteLine(getDayDifference(CDate("2017-06-03"), CDate("2017-06-03"), True).ToString)
    Console.WriteLine(getDayDifference(CDate("2017-06-03"), CDate("2017-05-03"), True).ToString)
    Console.WriteLine(getDayDifference(CDate("2017-02-03"), CDate("2017-05-03"), True).ToString)

    Console.ReadKey()
End Sub

Public Function getDayDifference(first As DateTime, second As DateTime, alwaysPositive As Boolean)
    Dim span As TimeSpan = second - first

    Return If(alwaysPositive, Math.Abs(span.TotalDays), span.TotalDays)
End Function

将返回:

  • 0
  • 31
  • 89

如果您想要真正的极性,可以将 alwaysPositive 参数设置为 False(有助于确定第一个日期是否低于第二个日期),例如:

  • 0
  • -31
  • 89

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多