如何计算两个日期之间的差异,以天数显示?
我有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中显示。
答案 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值之间的时间间隔数。”