可以使用Sub()函数计算两个时间之间的差异,然后使用Years()、Months()和Days()函数来获取相应的年、月和日数。以下是一个示例代码:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
birthdate := time.Date(1990, 1, 1, 0, 0, 0, 0, time.UTC)
years, months, days := diff(birthdate, now)
fmt.Printf("Age: %d years, %d months, %d days\n", years, months, days)
}
func diff(birthdate, now time.Time) (int, int, int) {
years := now.Year() - birthdate.Year()
months := int(now.Month() - birthdate.Month())
days := now.Day() - birthdate.Day()
if months < 0 {
years--
months += 12
}
if days < 0 {
months--
days += daysInMonth(now.Month()-1, now.Year())
}
return years, months, days
}
func daysInMonth(month time.Month, year int) int {
switch month {
case time.February:
if year%4 == 0 && (year%100 != 0 || year%400 == 0) {
return 29
}
return 28
case time.April, time.June, time.September, time.November:
return 30
default:
return 31
}
}