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

迅睿框架 更新 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

迅睿系统漏洞

百度AI批量检测敏感词
百度AI批量检测敏感词(2026-10-26)
优化长任务超时问题
泛解析站群系统
泛解析站群系统(2026-10-26)
添加子站时设置模板
GEO系统
GEO系统(2026-10-26)
修复抖音图文会话不持久:扩大 Cookie 域、会话 Cookie ...
GeoSeo收录宝
GeoSeo收录宝(2026-10-25)
优化插件日志等小细节 1 优化 爬虫监控月统计超200万数据容易...
迅睿工具箱
迅睿工具箱(2026-10-24)
修正页面显示样式
秒变内部站
秒变内部站(2026-10-23)
全站只有管理员身份可以访问
GeoSeo工具箱
GeoSeo工具箱(2026-10-23)
Schema信息数据兜底
AI文章生成器
AI文章生成器(2026-10-23)
关键词批量录入
网站监控
网站监控(2026-10-23)
状态码大于0,即认为服务器在线