2014-06-17 49 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

相关问题