record.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package chis
  2. import (
  3. "fmt"
  4. "time"
  5. "gbase/glog"
  6. )
  7. func GetAgeFromIdCard(idCard string, increment int) (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 += increment
  26. } else if lastDayOfYear.Month() == birthday.Month() && lastDayOfYear.Day() > birthday.Day() {
  27. age += increment
  28. } else {
  29. age += 0
  30. }
  31. return age
  32. }
  33. func CalcAgeFromIdCard(idCard string) (age int) {
  34. age = 0
  35. if len(idCard) != 18 {
  36. return age
  37. }
  38. birthdayStr := idCard[6:14]
  39. // 解析出生日期
  40. birthday, err := time.Parse("20060102", birthdayStr)
  41. if err != nil {
  42. glog.XWarning(fmt.Sprint("time.Parse error : %v\n", err))
  43. return
  44. }
  45. // 计算年龄,几年
  46. today := time.Now()
  47. age = today.Year() - birthday.Year() - 1
  48. if today.Month() > birthday.Month() {
  49. age += 1
  50. } else if today.Month() == birthday.Month() && today.Day() > birthday.Day() {
  51. age += 1
  52. } else {
  53. age += 0
  54. }
  55. return age
  56. }