联系官方销售客服

1835022288

028-61286886

应用插件 版主:官方插件技术组
有身份证字段,如何算年龄
类型:迅睿CMS 更新时间:2024-04-30 12:21:35 内容建站系统
插件 内容建站系统 V3.9
应用作者 迅睿官方团队
发布时间 2022-03-01 15:30:06
更新时间 2024-04-03 09:44:20

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)} 


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


插件教程:https://www.xunruicms.com/doc/app-928.html

回帖
  • 开源社区插件技术-小鹏
    #1楼    开源社区插件技术-小鹏
    2024-04-06 09:26:22
    Chrome 0
    这种其实很好办,去百度AI搜搜索一个身份证年龄的转换php函数,就可以了。这些小的计算的问题,百度AI都可以给你写好。
  • 学习狂人
    #2楼    学习狂人
    2024-04-06 10:48:29
    Chrome 0
    开源社区插件技术-小鹏 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
    Chrome 0
    生成一个这样的函数后怎么操作,还忘先生指导
  • 小波工作室
    #4楼    小波工作室
    2024-04-06 10:51:02
    Chrome 0
    这不是都写出来了吗?放倒迅睿里面,改下参数就可以输出了
  • 学习狂人
    #5楼    学习狂人
    2024-04-06 10:52:23
    Chrome 0
    这样写能实现吗? <!-- 假设模板中已有身份证号码字段值 --> <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
    Chrome 0
    <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
    Chrome 0
    @学习狂人:已解决,参照用AI