计算两个日期之间的差异,以天数显示(VB)

时间:2011-11-20 15:09:17

标签: asp.net vb.net

如何计算两个日期之间的差异,以天数显示?

我有2个文本框(txtHStart_Date& txtHEnd_Date)我使用了Ajax Calendar Extender在每个文本框中输入日期。 我希望将这两个日期之间的差异显示在一个单独的文本框中(txtNoOfDays)

我已经看过时间跨度功能,但似乎可以让它发挥作用。 我不确定如何将文本框声明为我计算的日期

代码:

Dim D1 As Date
Dim D2 As Date
Dim ts As New TimeSpan
D1 = txtHStart_Date.Text
D2 = txtHEnd_Date.Text
ts = D2 - D1

但我知道这不对。我也不知道如何让它在第三个TextBox中显示。

3 个答案:

答案 0 :(得分:2)

TimeSpan很简单易用。

Dim dtStart As DateTime = DateTime.Now.AddDays(-100)
Dim dtEnd As DateTime = DateTime.Now

Dim ts As TimeSpan = dtEnd - dtStart
Console.WriteLine(ts.TotalDays)

编辑:

按照您在日期变量中指定文本字符串时添加的注释,最好使用(和处理)

DateTime.TryParse("some date string", dtStart)

TryParse返回布尔值成功/失败,以便您可以对是否获得好/坏数据做出反应。

答案 1 :(得分:0)

这是迄今为止我所知道的最好的。 StringToDate函数让您决定要使用的日期格式。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        txtHStart_Date.Text = "11/20/2011"
        txtHEnd_Date.Text = "11/25/2011"

        Dim dtHStart_Date As DateTime = StringToDate(txtHStart_Date.Text, "MM/dd/yyyy")
        Dim dtHEnd_Date As DateTime = StringToDate(txtHEnd_Date.Text, "MM/dd/yyyy")

        Dim span As TimeSpan = dtHEnd_Date.Subtract(dtHStart_Date)
        txtNoOfDays.Text = span.Days
    End If
End Sub

Public Function StringToDate(ByVal strDate As String, ByVal pattern As String)
    Dim myDTFI As New System.Globalization.DateTimeFormatInfo()
    myDTFI.ShortDatePattern = pattern
    Dim dtDate As DateTime
    Try
        dtDate = DateTime.Parse(strDate, myDTFI)
    Catch ex As Exception
        Return False
    End Try
    Return dtDate
End Function

答案 2 :(得分:0)

使用DateDiff功能:

http://msdn.microsoft.com/en-us/library/b5xbyt6f(v=vs.80).aspx

“返回Long值,指定两个Date值之间的时间间隔数。”