35 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package utils
 | |
| 
 | |
| import "time"
 | |
| 
 | |
| // CalculateAge calculates the age based on a given birthdate and the current date in the format dd/mm/yy
 | |
| // It adjusts for cases where the current date is before the birthday in the current year.
 | |
| func CalculateAge(birthdate, today time.Time) int {
 | |
| 	today = today.In(birthdate.Location())
 | |
| 	ty, tm, td := today.Date()
 | |
| 	today = time.Date(ty, tm, td, 0, 0, 0, 0, time.UTC)
 | |
| 	by, bm, bd := birthdate.Date()
 | |
| 	birthdate = time.Date(by, bm, bd, 0, 0, 0, 0, time.UTC)
 | |
| 	if today.Before(birthdate) {
 | |
| 		return 0
 | |
| 	}
 | |
| 	age := ty - by
 | |
| 	anniversary := birthdate.AddDate(age, 0, 0)
 | |
| 	if anniversary.After(today) {
 | |
| 		age--
 | |
| 	}
 | |
| 	return age
 | |
| }
 | |
| 
 | |
| // CalculateAgeWithYOB calculates the age based on the given year of birth (YOB).
 | |
| // It subtracts the YOB from the current year to determine the age.
 | |
| //
 | |
| // Parameters:
 | |
| //   yob: The year of birth as an integer.
 | |
| //
 | |
| // Returns:
 | |
| //   The calculated age as an integer.
 | |
| func CalculateAgeWithYOB(yob int) int {
 | |
|     currentYear := time.Now().Year()
 | |
|     return currentYear - yob
 | |
| } |