说明
前一段时间在CSDN上回答了一位朋友的提问,其中就用到了datediff函数。个人认为这个自带的函数功能很强大,但是了解的人很少,我在最开始写一写功能的时候偶尔就会遇到求日期间隔或时间间隔的情形,不知道此函数就头疼的很,因为日期和时间的间隔不像是数字的间隔,直接使用“-”减号就计算出来了。
日期中涉及不同月份所含天数有30天的、有31天的,甚至2月份有28天或29天的情形,跨年的时候就是12进制;时间则是60进制、24进制,真的是想想就头疼,写起来更是痛苦。
直到某一天突然间了解到了datediff函数,简直就是大救星啊!它可以根据指定的间隔方式,计算日期间隔和时间间隔,例如想要计算两个日期之间间隔多少天、多少个天等等。
语法
DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )
参数 | 说明 |
---|---|
interval | 必需。 表示用于计算 date1 和 date2 之间差异的时间间隔的字符串表达式。 |
date1 | 必需;Variant (Date),最好是日期或时间较早的那个值 |
date2 | 必需;Variant (Date),相应的日期或时间较晚的那个值 |
firstdayofweek | 可选。 一个指定一周的第一天的常量。 如果未指定,则会假定为星期日。 |
firstweekofyear | 可选。 一个指定一年的第一周的常量。 如果未指定,则会假定 1 月 1 日出现的那一周为第一周。 |
interval 参数具有以下设置
Setting | 说明 |
---|---|
yyyy | 年 |
q | 季度 |
m | 月 |
y | 每年的某一日 |
d | 天 |
w | 工作日 |
ww | 周 |
h | 小时 |
n | 分钟 |
s | 秒 |
剩余firstdayofweek 和firstweekofyear两个参数使用默认就可以,如果有更细致的要求的话可以参考MDSN上datediff函数的条目。举个栗子吧:
代码code
Sub 时间间隔()
Dim tS As Date
Dim tE As Date
tS = Cells(2, 1).Value '开始日期
tE = Cells(2, 2).Value '结束日期
Cells(2, 3).Value = datediff("yyyy", tS, tE) '间隔-年
Cells(2, 4).Value = datediff("q", tS, tE) '间隔-季度
Cells(2, 5).Value = datediff("m", tS, tE) '间隔-月
Cells(2, 6).Value = datediff("ww", tS, tE) '间隔-周
Cells(2, 7).Value = datediff("d", tS, tE) '间隔-日
End Sub
使用说明
首先通过截图看一下运行的结果:
A2和B2的日期值是手动填写的,后面从C2至G2均为代码计算得出的数据。可以看到运用datediff函数真的很简便、很准确,再也不用为计算日期时间间隔抓耳挠腮了!
如有意见建议或使用中出现Bug留言,谢谢!