Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

Find the age of a person..

Posted on 2003-11-30
Medium Priority
3,518 Views
How to find the age of a person by providing date of birth using VBScript?
0
Question by:t_msenthilk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 19

Expert Comment

ID: 9848553
@t_msenthilk:

> How to find the age of a person by providing date of birth using VBScript?

Dim nAge
Dim dtDOB

nAge = (Now() - dtDOB) / 365.24

(Substracting 2 date values gives you their difference in Days.  Divide that by the number of days in a year, and you get years...)  If you a nice round number, you can just round that value.

Hope That Helps,
Dex*
0

LVL 45

Expert Comment

ID: 9848585
0

LVL 53

Accepted Solution

Dhaest earned 600 total points
ID: 9848631
' ******************************************************************
' This function returns a person's age in years. It addresses some
'  rounding issues with using a simple DateDiff() function call.

' Example: lngYourAge = Age("04/24/1973")
' Returns: lngYourAge is the correct age of the person as of today

' By: Craig H. Rettig
' Date: February 2003

' Get more free code samples at http://www.BitBucketHeaven.com/
' ******************************************************************

Public Function Age(ByVal vntDOB As Variant, _
Optional ByVal vntAsOf As Variant = Null) As Long

Dim dtDOB As Date
Dim dtAsOf As Date
Dim dtBDay As Date  'Birthday in the year of calculation.

Age = -1 'Initialize to -1 to return if an error occurs.
If IsDate(vntDOB) Then
dtDOB = CDate(vntDOB)

If Not IsDate(vntAsOf) Then 'Date to calculate age from.
dtAsOf = Date
Else
dtAsOf = CDate(vntAsOf)
End If

If dtAsOf >= dtDOB Then 'Calculate only if it's after person was born.
dtBDay = DateSerial(Year(dtAsOf), Month(dtDOB), Day(dtDOB))
Age = CLng(DateDiff("yyyy", dtDOB, dtAsOf) + (dtBDay > dtAsOf))
End If
End If
End Function

0

LVL 19

Expert Comment

ID: 9850394
Why would you use that huge function when you can do it in one line?  If you really like the "DateDiff" function, then use it like this:

nAge = DateDiff("yyyy", dtDOB, Date())

There is no reason for that function to be so much code.

Dex*
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you haven’t already, I encourage you to read the first article (http://www.experts-exchange.com/articles/18680/An-Introduction-to-R-Programming-and-R-Studio.html) in my series to gain a basic foundation of R and R Studio.  You will also find the …