有身份证字段,如何算年龄

迅睿框架 更新 2024-04-30 12:21:35 学习狂人

360截图20240406091842382


请问一下,我数据库里有一个字段是身份证号码,没有单独的生日字段,如何在计算年龄在前后台展示出来。


查阅论坛资料有如下方法:

第一种方法:{php echo date("Y") - date("Y", $_aaa);}

第二种方法:{php echo date("Y") - date("Y", $_aaa);}

第三种:首先要看看你数据库存入的值,是不是时间戳,比如像 1230739200 这样的值。如果不是,那么,就要先转成时间戳。

{php echo date("Y") - date("Y", strtotime($_cynf))}

第四种:列表页用

{php echo date("Y") - date("Y", strtotime($t._cynf))}

第五种:如果应该年龄字段是在会员表中,那么写法就是

{php echo date("Y") - date("Y", $user._cynf)} 


而我这种因没有出生年月字段,应该如何写代码,是不是必须得重新建立一个这样的字段?


方案

  • 开源社区插件技术-小鹏 #1 · 2024-04-06 09:26:22
    这种其实很好办,去百度AI搜搜索一个身份证年龄的转换php函数,就可以了。这些小的计算的问题,百度AI都可以给你写好。
  • 学习狂人 #2 · 2024-04-06 10:48:29
    开源社区插件技术-小鹏 function getAgeFromIDCard($idCard) { // 验证身份证号码长度和格式 if (strlen($idCard) !== 18 || !ctype_digit($idCard)) { return false; // 或者抛出异常,根据需求处理无效身份证号码 } // 提取出生日期 $birthDateStr = substr($idCard, 6, 8); try { // 将出生日期字符串转换为日期对象 $birthDate = new DateTimeImmutable($birthDateStr); // 获取当前日期 $currentDate = new DateTimeImmutable(); // 计算年龄 $age = $birthDate->diff($currentDate)->y; return $age; } catch (Exception $e) { // 处理日期解析或计算错误,如抛出的异常 return false; // 或者抛出异常,根据需求处理错误情况 } } // 示例使用 $idCard = 'xxxxxxxxxxxx19900101'; // 替换为实际的身份证号码 $age = getAgeFromIDCard($idCard); if ($age !== false) { echo "该身份证对应的年龄为: {$age} 岁"; } else { echo "无法从提供的身份证号码中获取有效年龄"; }
  • 学习狂人 #3 · 2024-04-06 10:49:02
    生成一个这样的函数后怎么操作,还忘先生指导
  • 小波工作室 #4 · 2024-04-06 10:51:02
    这不是都写出来了吗?放倒迅睿里面,改下参数就可以输出了
  • 学习狂人 #5 · 2024-04-06 10:52:23
    这样写能实现吗? <!-- 假设模板中已有身份证号码字段值 --> <input type="hidden" id="idCardField" value="{{data.id_card}}">
    <!-- 显示年龄的HTML元素 --> <div id="ageDisplay"></div>
    <!-- JavaScript代码块,通常放在</body>标签之前 --> <script> document.addEventListener('DOMContentLoaded', function () { const idCard = document.getElementById('idCardField').value; const age = calculateAge(idCard); document.getElementById('ageDisplay').textContent = '年龄:' + age + '岁'; }); </script>
  • 学习狂人 #6 · 2024-04-30 12:20:27
    满意答案
    <span class="left">年龄:</span> <span class="right" id="ageContainer" data-sfzhm="{$sfzhm}"></span> <script> function calculateAgeFromSFZHM(sfzhm) { // 简化处理,仅适用于18位身份证号码 const birthYear = parseInt(sfzhm.substr(6, 4), 10); const currentYear = new Date().getFullYear(); return currentYear - birthYear;}document.addEventListener("DOMContentLoaded", () => { const ageContainer = document.getElementById("ageContainer"); const sfzhm = ageContainer.dataset.sfzhm; if (sfzhm.length === 18) { const age = calculateAgeFromSFZHM(sfzhm); const ageElement = document.createElement("div"); ageElement.textContent = `${age}岁;`; ageContainer.appendChild(ageElement); }}); </script>
  • 学习狂人 #7 · 2024-04-30 12:21:35
    @学习狂人:已解决,参照用AI

迅睿系统漏洞

GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...
阿里云滑动验证码
阿里云滑动验证码(2026-09-10)
采用阿里云验证码替换迅睿系统自带的图片验证码和滑动验证码。后台设置方...
下载Plus
下载Plus(2026-09-09)
为网站附件下载加上“计数、限次、统计、防护”四重能力:按用户组控制下...
全库搜索
全库搜索(2026-09-09)
修复全模块搜索时,删除按钮点击无效的bug
在线客服
在线客服(2026-09-09)
增加消息提示音
GeoSeo收录宝
GeoSeo收录宝(2026-09-08)
新增 多网站系统Sites 开关 新增 SITE_ID字段,完美...
站群分站系统
站群分站系统(2026-09-08)
后台加入模板标签的语法代码供复制 当站点logo未上传时,调用系统...