2011-11-20 79 views
1

如何計算兩個日期之間的差異以天數顯示爲數字?計算兩個日期之間的差異,以天數爲單位顯示爲一個數字(VB)

我有2個文本框(txtHStart_Date & txtHEnd_Date)我已經使用Ajax日曆擴展器在每個文本框中輸入日期。 我想得到這兩個日期之間的區別顯示在一個單獨的文本框(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

你有什麼試過? TimeSpan的目的正是你所描述的。 –

+0

昏暗D1截止日期 昏暗D2截止日期 昏暗TS作爲新的時間跨度 D1 = txtHStart_Date.Text D2 = txtHEnd_Date.Text TS = D2 - D1,但我知道這個心不是正確的。我也不知道如何讓它顯示在第三個文本框 – user1055487

回答

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

'ts.TotalDays'返回一個分數。使用'ts.Days'來返回一個整數。 –

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 
相關問題