How to calculate age?

jue

Member
Joined
Apr 1, 2005
Messages
11
Programming Experience
Beginner
Hi everyone...
i have problem here. how to calculate age?
I have date of birth txtdob.text get from the database and txtage.text. txtage.text will automatically calculate the age.
how how.please help me.
 

ritesh_jain1982

Well-known member
Joined
Jan 10, 2005
Messages
53
Programming Experience
1-3
Hi,
Try to use this..................

txtage.text=DateDiff(DateInterval.Year,cdate(txtdob.text.trim),Now.Date
)

I hope this will help u...........

Regards,
Ritesh
 

JuggaloBrotha

VB.NET Forum Moderator
Staff member
Joined
Jun 3, 2004
Messages
4,524
Location
Lansing, MI; USA
Programming Experience
10+
i got this calcage function from a thread here on vbdotnetforums but i dont remember who or when anyways here's the function:

VB.NET:
Public Function CalculateAge(ByVal BirthDate As Object) As String
		'returns a string that show years, months and days
		Dim intYear As Integer, intMonth As Integer, intDay As Integer
		Dim dtTemp As Date

		If Not IsDate(BirthDate) Then Exit Function

		dtTemp = CDate(BirthDate)
		If dtTemp > Now Then Exit Function

		intYear = dtTemp.Year
		intMonth = dtTemp.Month
		intDay = dtTemp.Day
		intYear = Date.Now.Year - intYear
		intMonth = Date.Now.Month - intMonth
		intDay = Date.Now.Day - intDay

		If intDay < 0 Then
			Select Case dtTemp.Month
				Case 1, 3, 5, 7, 8, 10, 12
				    intDay = 31 - Math.Abs(intDay)
				Case 4, 6, 9, 11
				    intDay = 30 - Math.Abs(intDay)
				Case 2
				    If dtTemp.Year Mod 4 = 0 Then
					    intDay = 29 - Math.Abs(intDay)
					Else
					    intDay = 28 - Math.Abs(intDay)
					End If
			End Select
			intMonth = intMonth - 1
		End If

		If intMonth < 0 Then
			intMonth = 12 - Math.Abs(intMonth)
			intYear = intYear - 1
		End If

		Return IIf(intYear <> 0, intYear & " Years ", "") & _
			   IIf(intMonth <> 0, intMonth & " Months ", "") & _
			   IIf(intDay <> 0, intDay & " Days", "")

	End Function

	Public Function CalcAge(ByVal BirthDate As Object) As Long
		'returns only years
		If Not IsDate(BirthDate) Then Exit Function
		Dim dtTemp As Date
		dtTemp = CDate(BirthDate)
		If dtTemp > Now Then Exit Function
		Return DateDiff("yyyy", dtTemp, Date.Now) + (DateSerial(Year(Date.Now), _
						 Month(dtTemp), dtTemp.Day) >= Date.Now)
	End Function
 

TPM

Well-known member
Joined
Dec 7, 2004
Messages
623
Location
CA
Programming Experience
3-5
ritesh_jain1982 said:
txtage.text=DateDiff(DateInterval.Year,cdate(txtdo b.text.trim),Now.Date)
That works but assumes they've had their b'day for that year.
This will always give you the correct age:

VB.NET:
Dim DateNow as date = date.now
Dim DateBorn as date = cdate(txtdob.text)
If DateNow.month < DateBorn.month or DateNow.month = DateBorn.month AND DateNow.day < DateBorn.day Then
DateNow = DateNow.AddYears(-1)
End IF
txtage.text= DateNow.year - DateBorn.year
Or
txtage.text=DateDiff(DateInterval.Year,DateBorn,DateNow)
 

jue

Member
Joined
Apr 1, 2005
Messages
11
Programming Experience
Beginner
hi everyone..
Thank you helping me. i try code below but nothing happen in txtage.text
Public Function CalculateAge()

Dim DateNow As Date = Date.Now

Dim DateBorn As Date = CDate(txtdob.Text)

If DateNow.Month < DateBorn.Month Or DateNow.Month = DateBorn.Month And DateNow.Day < DateBorn.Day Then

DateNow = DateNow.AddYears(-1)

End If

txtage.Text = DateNow.Year - DateBorn.Year
end Function

or i missing something. please help me.
 

TPM

Well-known member
Joined
Dec 7, 2004
Messages
623
Location
CA
Programming Experience
3-5
Did you call the function?
 

levyuk

Well-known member
Joined
Jun 7, 2004
Messages
313
Location
Wales, UK
Programming Experience
3-5
Here's one for you, how would you work out the age of something that was born say in 2000BC?
 

TPM

Well-known member
Joined
Dec 7, 2004
Messages
623
Location
CA
Programming Experience
3-5
You'd dim DateBorn as an integer (instead of a date) and set it as -2000 then DateNow.Year - DateBorn would work.
 

jue

Member
Joined
Apr 1, 2005
Messages
11
Programming Experience
Beginner
hi..
the format date of birth is 29.04.1982.
how to call the the function??
 

bashar

New member
Joined
Apr 30, 2012
Messages
1
Programming Experience
5-10
Calculate age

as i got from your message, i suppose that u have a a birth date in database with string format and you want to calculate the age, first u need to convert this string to date format and then calculate the age as follows:
Dim strDate As String
Dim objdate As Date
strDate = 'your birthdate from database'


strDate = strDate.Substring(0, 3) & strDate.Substring(3, 3) & strDate.Substring(6, 4) // how saved in database using calendar control for ex. 02/04/1990
objdate = Date.Parse(strDate).ToShortDateString

Dim todayYear As Integer = Date.Now.Year
Dim birthYear As Integer = objdate.Year
Dim age As Integer = todayYear - birthYear
 

JuggaloBrotha

VB.NET Forum Moderator
Staff member
Joined
Jun 3, 2004
Messages
4,524
Location
Lansing, MI; USA
Programming Experience
10+
as i got from your message, i suppose that u have a a birth date in database with string format and you want to calculate the age, first u need to convert this string to date format and then calculate the age as follows:
Dim strDate As String
Dim objdate As Date
strDate = 'your birthdate from database'


strDate = strDate.Substring(0, 3) & strDate.Substring(3, 3) & strDate.Substring(6, 4) // how saved in database using calendar control for ex. 02/04/1990
objdate = Date.Parse(strDate).ToShortDateString

Dim todayYear As Integer = Date.Now.Year
Dim birthYear As Integer = objdate.Year
Dim age As Integer = todayYear - birthYear
Kudos for bringing up a 7 year old thread. You can also just subtract the two dates and get a timespan to know how much time as elapsed:
    Private Function CalculateAge(ByVal Date1 As Date, ByVal Date2 As Date) As TimeSpan
        Select Case True
            Case Date1 > Date2 : Return Date1.Subtract(Date2)
            Case Else : Return Date2.Subtract(Date1)
        End Select
    End Function
 
Top Bottom