VBScript DateDiff月

时间:2014-11-20 01:12:55

标签: vbscript datediff

我遇到了关于在两个日期之间获得月份差异的问题。 这是一个示例:

DateDiff("m","2014-10-17","2014-10-30")

上述代码返回0个月,因为它不到一个月。但是,

DateDiff("m","2014-10-17","2014-11-01")

返回1,因为它仍然是15天,所以不应该是。

我的问题是我想知道这两个日期是否已经超过一个月,但似乎只有在日期的月份部分发生变化时才计算1个月。

2 个答案:

答案 0 :(得分:2)

DateDiff使用第一个参数中定义的精度计算两个时间戳之间的跨度。根据您在问题和评论中的描述,您似乎正在寻找类似的东西:

ds1 = "2014-10-17"
ds2 = "2014-10-30"

d1 = CDate(ds1)
d2 = CDate(ds2)

diff = DateDiff("m", d1, d2)
If diff > 0 And Day(d2) < Day(d1) Then diff = diff - 1

WScript.Echo diff & " full months have passed between " & ds1 & " and " & ds2 & "."

答案 1 :(得分:0)

您可以使用&#39; DateDiff(&#34; d&#34;,date1,date2)&#39;来计算两个日期之间的日差。 然后计算30天的全月数。

以下是一个例子。

monthDiff = int(DateDiff("d","2014-10-17","2014-11-01") / 30)

如您所知,几个月的月份因月而异。例如,11月有30天,12月有31天。

如果您希望在11月的第一天使用每月30天,并且在12月的第一天每月使用31天,则代码需要一个月的日期表和处理月份信息的例行程序。< / p>