通过身份证号码计算年龄

一、需求分析

在一些需要精确统计用户年龄的场景中。

  • 如果我们使用之间由用户填写自己年龄的方式的话,就无法保证用户填写的信息是准确的
  • 其中最有效的办法就是让用户进行实名认证,再由用户上传的身份证号码截取到出生日期,通过计算后得到用户的真实年龄

二、解决思路

1、截取出生日期

我们先以18位的身份证号码为例:

123456198701020304

  • 假设以上是一个真实的身份证号码,从第七个数字开始到第14个数字为止,这里是身份证号码中的出生年月日
  • 我们只需要通过字符串截取或strconv.Atoi方法来截取到第6~14位的数字[字符下标从0开始算起,左闭右开]
  • 同样的道理,我们也可以使用这种方法来将出生年月中的年月日分别拆出来

2、计算年龄

首先我们获取到当前时间,再将截取到的出生日期与当前日期相比较,就能得出用户的真实年龄了
🔆需要注意的是:
💡未到生日月份,或者到了月份,但未到生日日期,年龄都要减1岁
💡对计算出的年龄进行判断,不要出现负值

三、代码实现

有了理论基础,那么接下来就是使用代码将它实现了:

func main(){
age:= getAgeByBirthday(req.ApplicationInfo.IdentityCard[6:14])
}func getAgeByBirthday(birthday string) int {year, _ := strconv.Atoi(birthday[0:4])month, _ := strconv.Atoi(birthday[4:6])day, _ := strconv.Atoi(birthday[6:])// 计算当前日期与生日中年月日的差值now := time.Now()age := now.Year() - yearmoreMonth := int(now.Month()) - monthmoreDay := now.Day() - day// 未到生日月份,或者到了月份,但未到生日日期,年龄都要减1岁if moreMonth < 0 || (moreMonth == 0 && moreDay < 0) {age--}// 不要出现负值if age < 0 {age = 0}return age
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

m4s转mp3——B站缓存视频提取音频

前言 しかのこのこのここしたんたん&#xff08;鹿乃子乃子虎视眈眈&#xff09;非常之好&#xff0c;很适合当闹钟&#xff0c;于是缓存了视频&#xff0c;想提取音频为mp3 直接改后缀可乎&#xff1f;格式转换工具&#xff1f; 好久之前有记录过转MP4的&#xff1a; m4s转为…

nacos配置实时刷新@RefreshScope注解和定时任务@Scheduled注解同时使用导致失效问题

RefreshScope和Scheduled的组合使用有时会导致Scheduled任务失效&#xff0c;主要是由于它们在Spring中的工作机制不同。 RefreshScope的工作原理 RefreshScope是Spring Cloud中的一个注解&#xff0c;它允许在应用运行时刷新bean的属性&#xff0c;而不需要重启应用程序。具…

美国空军发布类ChatGPT产品—NIPRGPT

6月11日&#xff0c;美国空军研究实验室&#xff08;AFRL&#xff09;官网消息&#xff0c;空军部已经发布了一款生成式AI产品NIPRGPT。 据悉&#xff0c;NIPRGPT是一款类ChatGPT产品&#xff0c;可生成文本、代码、摘要等内容&#xff0c;主要为为飞行员、文职人员和承包商提…

文件没有权限问题:cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied

问题描述 执行 aem bootstrap start --plus 命令启动 Dreamview 提示错误&#xff1a; /bin/sh: 1: cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied [ERROR] Failed to start Dreamview. Please check /opt/apollo/neo/data/log/dreamview.log or /op…

【React】在 React 组件中,怎么使用useContext

在React中,useContext 是一个Hook,它允许你无需显式地通过组件树的每一层来传递 props,就能将值深入到组件树的任何位置。要使用 useContext,你需要先创建一个 Context 对象,然后使用这个对象提供的 Provider 组件来包裹你的应用中的一部分。然后,任何在这个 Provider 下…

使用R语言生成CDISC SDTM.AE domain

写在前面 - 使用的是Rstudio - 其实R已经有生成sdtm相关的package&#xff0c;以下代码仅作为练习R语言的语法&#xff0c;不是高效生成sdtm的方法 - 代码中没有解决的问题包括&#xff1a;EPOCH相关的逻辑没有考虑partial date的情况&#xff1b;在使用arrange() function做…

ArrayList和LinkedList的区别!!!

总结&#xff1a; 1、数据结构的实现 ArrayList&#xff1a;动态数组。 LinkedList&#xff1a;双向链表。 2、时间复杂度不同 ArrayList&#xff1a;O(1) LinkedList: O(n) ①&#xff1a;随机访问---- ArrayList > LinkedList &#xff08;ArrayList采用下标&#xff0…

ARM-V9 RME(Realm Management Extension)系统架构之调试

安全之安全(security)博客目录导读 本节中&#xff0c;“RMSD外部调试”一词用于描述任何系统或PE的外部调试功能&#xff0c;这些功能能够实现以下目的&#xff1a; 监控或修改RMSD行为。对Realm PAS或Realm安全状态的外部访问。 本节中&#xff0c;“Root外部调试”一词用于…

C++ 实现HTTP的客户端、服务端demo和HTTP三方库介绍

本文使用C模拟实现http的客户端请求和http的服务端响应功能&#xff0c;并介绍几种封装HTTP协议的三方库。 1、实现简单HTTP的服务端功能 本程序使用C tcp服务端代码模拟HTTP的服务端&#xff0c;服务端返回给客户端的消息内容按照HTTP协议的消息响应格式进行了组装。 demo如…

PC端剪映6.0免vip版本,功能随便用

下载解压后点击“JianyingPro.exe”图标即可使用&#xff0c;使用过程中无需登陆账号。操作很简单。 链接&#xff1a;https://pan.baidu.com/s/14bon1Ta9GOUFyUZDa2X3TA?pwd8h2b 提取码&#xff1a;8h2b

采用ava+B/S架构开发的工业级UWB(Ultra-Wideband)室内定系统源码UWB定位系统技术接口及技术特点

采用avaB/S架构开发的工业级UWB&#xff08;Ultra-Wideband&#xff09;室内定系统源码UWB定位系统技术接口及技术特点 UWB&#xff08;Ultra-Wideband&#xff09;定位技术本身并不直接连接蓝牙或其他无线通信技术进行定位。然而&#xff0c;在实际应用中&#xff0c;UWB定位技…

C# —— 逻辑运算符

简介 逻辑运算符用来连接多个 bool 类型表达式&#xff0c;实现多个条件的复合判断。 C#中的逻辑运算符包括&#xff1a;逻辑非( ! )、逻辑与( &&、& )、逻辑或( ||、| )。 逻辑与 & 符号 && 并且 规则: 对两个布尔值进行运算 有假则假 同真为真 bo…

怎么用住宅代理IP?使用住宅代理IP有哪些好处?

如何使用住宅代理IP&#xff1a; 使用住宅代理IP主要涉及以下几个步骤&#xff1a; 选择合适的代理IP供应商&#xff1a; 考虑供应商的可靠性、代理IP的质量、速度、稳定性以及价格。选择信誉良好且服务稳定的供应商&#xff0c;确保获得高质量的代理IP服务。配置代理IP&#…

vue面试题九

一、Vue.js如何进行性能优化&#xff1f; Vue.js 的性能优化可以从多个方面入手&#xff0c;以下是一些常见的性能优化策略和方法&#xff1a; 使用生产环境构建&#xff1a; 确保在部署生产环境之前&#xff0c;使用 Vue.js 的生产构建版本。生产构建版本会自动进行代码压缩和…

代理IP常见问题解答,新手必看手册

代理IP在互联网数据收集和业务开展中发挥着重要作用&#xff0c;它充当用户客户端和网站服务器之间的“屏障”&#xff0c;可以保护用户的真实IP地址&#xff0c;并允许用户通过不同的IP地址进行操作。然而&#xff0c;在使用代理IP的过程中&#xff0c;用户经常会遇到一些问题…

vue 中多个表单元素控一个校验规则

1. 场景一 <el-form-itemlabel"确认时长方式"prop"preSubResourceDurationDay" ><div class"confirmDurationDay">最晚使用日期前<el-input-numberv-model"form.preSubResourceDurationDay":precision"0"cla…

axure使用中继器画柱状图

源文件在顶部。 在axure通过读取中继器中的数据来画柱状图&#xff0c;如下图&#xff1a; 1&#xff09;创建一个中继器&#xff0c;在里面创建两列&#xff1a;1列是柱状图底部的名称、2列是柱的高度&#xff0c;如下图&#xff1a; 2&#xff09;双击中继器&#xff0c;画一…

ansible安装wordpress

1.回顾 yum安装wordpress 查看别名 [rootlocalhost ~]# type ll ll 是 ls -l --colorauto 的别名设置别名 aliasyum install -y alias ymyum install -y# 使用别名 ym nginx# 取消别名 unalias ym# 基于LNMP做一个wordpressnginx mysql 5.7 PHP 7.4#1、初始化过程 修改主机名…

公寓项目-验证码登录模块

文章目录 验证阿 验证阿 使用hutool工具类生成 首先要返回给前端数据 使用一个vo接收 前端接收使用的有 key 还有图片的编码 package com.healer.spzx.service.model.vo.system;import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data;Data Schema(descr…

【code-server】Code-Server 安装部署

Code-Server 安装部署 1.环境准备 可以参考 https://coder.com/docs/code-server/install code-server的安装流程进行安装&#xff0c;主机环境是 Centos7 建议使用 docker 方式进行安装&#xff0c;可能会出现如下报错&#xff0c;需要升级 GNC 的版本&#xff0c;由于影响交…