VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

吉云

最近手头有个活儿,需要算算两个日期之间差多少时间。具体点说,就是要看看系统里那些会员,他们的会龄到底有多久,还有就是根据他们的生日算算大概多少岁。

我琢磨着是不是得把年、月、日拆开,然后各种加加减减,还得考虑闰年啥的,光想想就头大,感觉忒麻烦,肯定容易出错。特别是算年龄,如果只用年份减年份,那肯定不准,年底生日的人就吃亏。

后来捣鼓一下,想起来VB里头自带一个挺方便的东西,就是这个 DateDiff 函数。这玩意儿就是专门干这个的,算日期差。

VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

具体咋用的?

不难。你告诉它你想按啥单位算(比如天、月、年),再给它两个日期,它就能给你算出差值来。

比如我要算两个日期差多少天:

  • 你得先准备好两个日期变量,比如说一个是开始日期 startDate,一个是结束日期 endDate (可以直接用 Date 获取今天的日期)。
  • 然后就像这样写:DateDiff("d", startDate, endDate)。那个 "d" 就是说我要算天数。
  • VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

要是想算差多少年,也差不多:

  • 把 "d" 换成 "yyyy" 就行:DateDiff("yyyy", startDate, endDate)

其他的像算月份差 ("m"),周数差 ("ww") 也都支持,挺全乎的。

VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

算年龄时候的小注意点

就像我前面担心的,直接用 "yyyy" 算年龄有时候会有点小误差。比如一个人是12月31号生的,到第二年1月1号,用 DateDiff("yyyy", ...) 算出来就是差1年,但实际上他才刚过完生日没几天,还没满周岁。

我当时是这么处理的:先用 DateDiff("yyyy", birthday, Date) 算出年份差。然后,再比较一下今天的月份、日子是不是还没到他生日那个月份、日子。要是还没到,那就算出来的年份差就得减掉 1,这样才准。

写起来大概是这样(当然具体变量名和写法看你自己习惯):

Dim yearsDiff As Long

VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

Dim birthdayDate As Date
Dim currentDate As Date
' ... 这里给 birthdayDate 和 currentDate 赋值 ...
yearsDiff = DateDiff("yyyy", birthdayDate, currentDate)
' 下面这句是关键,用 DateSerial 拼出今年的生日日期来比较
If currentDate < DateSerial(Year(currentDate), Month(birthdayDate), Day(birthdayDate)) Then

VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

yearsDiff = yearsDiff - 1
End If

这样算出来的年龄就比较靠谱。

这个 VBDATEDIFF 用起来确实省事多,比自己手动拆分日期然后计算强太多。搞定之后,会员的会龄、年龄,一下子就算出来,数据处理起来也顺畅不少。

下次再碰到要算日期差的情况,尤其是在VB环境里,直接用这个函数就对,简单高效。

VBDATEDIFF函数计算年龄很方便,具体要怎么操作才对?

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]