golang身份证计算年龄

QQ1032520598 · · 5402 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

package main import ( "fmt" "strconv" "time" ) func main() { var mapmou = map[string]int{"January": 1, "february": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8, "September": 9, "October": 10, "November": 11, "December": 12} idCard := "34052419800101001X" //身份证 now := time.Now() now_year := now.Year() // 年 now_mo := mapmou[now.Month().String()] // 月 now_day := now.Day() // 日 fmt.Println(now_year, now_mo, now_day) idcard_year, _ := strconv.Atoi(Substr(idCard, 6, 4)) // 年 idcard_mo, _ := strconv.Atoi(Substr(idCard, 10, 2)) // 月 idcard_day, _ := strconv.Atoi(Substr(idCard, 12, 2)) // 日 fmt.Println(idcard_year, idcard_mo, idcard_day) fmt.Println("idCard:" + idCard) age := now_year - idcard_year // 如果计算虚岁需这样:age := now_year - idcard_year+1 if now_year < idcard_year { age = 0 } else { if now_mo < idcard_mo { age = age - 1 } else { if now_day < idcard_day { age = age - 1 } } } fmt.Println("age:", age) } //对字符串进行截取 func Substr(str string, start, length int) string { rs := []rune(str) rl := len(rs) end := 0 if start < 0 { start = rl - 1 + start } end = start + length if start > end { start, end = end, start } if start < 0 { start = 0 } if start > rl { start = rl } if end < 0 { end = 0 } if end > rl { end = rl } return string(rs[start:end]) }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5402 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传