聯系官方銷售客服
1835022288
028-61286886
插件名稱 | 建站系統 V3.19 |
插件作者 | 迅睿官方團隊 |
最近更新 | 2025-04-24 15:41:23 |
[高級版]內容聚合欄目,增加滾動條效果 [高級版]module標簽優化catid查詢條件效率 修復多網站時偶爾存在其他站點緩存丟失的情況 |
請問一下,我數據庫里有一個字段是身份證號碼,沒有單獨的生日字段,如何在計算年齡在前后臺展示出來。
查閱論壇資料有如下方法:
第一種方法:{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)}
而我這種因沒有出生年月字段,應該如何寫代碼,是不是必須得重新建立一個這樣的字段?
回復@開源社區插件技術-小鵬
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 "無法從提供的身份證號碼中獲取有效年齡"; }
這樣寫能實現嗎?
<!-- 假設模板中已有身份證號碼字段值 -->
<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>
<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>