2014-06-17 51 views
0

我需要在VB中查找兩個日期在幾個月和幾天之間的差異。使用DateDiff()函數,我沒有得到所需的結果,因爲DateDiff()只減去相應的值。例如:在VB中使用DateDiff()來查找兩個日期在幾個月和幾天之間的差異

DateDiff("m", '31/01/2012', '1/02/2012') 

返回1個月,這是不正確的。我如何實現這一目標?

+0

什麼會是期望的結果?你想只在結果天數還是? – Alex

+0

1天,以上例或0個月爲例。我想要以月和數據形式的結果。例如:如果開始日期是31/01/2012和結束日期是2012年5月3日,我需要有1個月和5天的答案。 –

+0

嘗試使用「d」而不是「m」來獲得天數差異 – Bjorn

回答

1

我已經解決了這個問題。我不得不寫一個我需要的功能。該算法是:

1)使用DateDiff計算兩個月之間的差異。 2)將兩個日期的'dd'部分存儲在2個不同的變量中。 3)如果開始日期的'dd'大於結束日期的'dd',月份將爲Step1.value-1,否則,月份將爲step1.value 4)將開始日期增加月從步驟3得到 5)運行從1到31的循環,將開始日期遞增1,直到它等於結束日期。天的 6)值將是(無迭代)

的代碼是:

Dim temp As Date 
Dim temp1 As Integer 
Dim i As Integer 
Dim day1 As Integer 
Dim day2 As Integer 


temp1 = DateDiff("m", StartDate, EndDate) 

day1 = DatePart("d", StartDate) 
day2 = DatePart("d", EndDate) 
If day1 > day2 Then 
    temp = DateAdd("m", (temp1 - 1), StartDate) 
    Month = (temp1 - 1) 
Else 
    temp = DateAdd("m", (temp1), StartDate) 
    Month = (temp1) 
End If 

For i = 1 To 31 
    If temp = EndDate Then Exit For 
    temp = DateAdd("d", 1, temp) 
Next i 

Day = (i - 1) 
+0

'for'循環[不是真的必要](http://blogs.msdn.com/b/oldnewthing/archive/2011/12/27/10251210.aspx)... – GSerg

+0

@GSerg:請你寫一下for循環的替代方法? –

+0

'Day = DateDiff(「d」,temp,EndDate)' – GSerg

相關問題