In .NET non esiste una funzione apposita per il calcolo dell'età di una persona, ecco come possiamo costruirne una con qualche linea di codice VB.NET.
Iniziamo con la definizione delle variabili
Dim oggi As Date = Date.Today 'variabile con la data odierna
Dim età As Integer
Verifichiamo che i dati in input (ByVal nascita As date) siano consistenti, la data di nascita non può essere futura.
If nascita > oggi Then
throw new ArgumentException("La data di nascita è futura. Impossibile calcolare l'età.", "nascita")
End if
Possiamo ora procedere con il calcolo inizializzando la variabile età con la differenza tra l'anno odierno e l'anno di nascita.
età = oggi.Year - nascita.Year
Ora verifichiamo se la persona deve ancora festeggiare il suo compleanno quest'anno. In caso positivo, sottraiamo un anno alla variabile età.
If New Date(oggi.Year, nascita.Month, nascita.Day) > oggi Then
età -= 1
End If
Quali sono gli errori più frequenti?
1) Se eseguiamo la sola sottrazione degli anni invecchierebbero tutti lo stesso giorno, precisamente il 1° gennaio...
Public Function CalcolaEta(ByVal dataNascita As Date) As String
Dim eta As Integer = Today.Year - dataNascita.Year
return eta
End Function
2) Se tralasciamo di verificare che la data di nascita non appartiene al passato, la funzione potrebbe restituirci età negative.
In allegato trovate il codice qui descritto e un form per testare i vari algoritmi.