record.go 770 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package chis
  2. import (
  3. "fmt"
  4. "time"
  5. "gbase/glog"
  6. )
  7. func GetAgeFromIdCard(idCard string) (age int) {
  8. age = 0
  9. if len(idCard) != 18 {
  10. return age
  11. }
  12. birthdayStr := idCard[6:14]
  13. // 解析出生日期
  14. birthday, err := time.Parse("20060102", birthdayStr)
  15. if err != nil {
  16. glog.XWarning(fmt.Sprint("time.Parse error : %v\n", err))
  17. return
  18. }
  19. // 计算年龄,几年
  20. today := time.Now()
  21. age = today.Year() - birthday.Year()
  22. firstDayOfNextYear := time.Date(today.Year()+1, 1, 1, 0, 0, 0, 0, time.UTC)
  23. lastDayOfYear := firstDayOfNextYear.AddDate(0, 0, -1)
  24. if lastDayOfYear.Month() > birthday.Month() {
  25. age += 1
  26. } else if lastDayOfYear.Month() == birthday.Month() && lastDayOfYear.Day() > birthday.Day() {
  27. age += 1
  28. } else {
  29. age += 0
  30. }
  31. return age
  32. }