重寫後的標題為:根據YYYYMMDD格式的出生日期計算年齡
P粉265724930
P粉265724930 2023-08-20 16:03:39
0
2
410
<p>如何根據格式為YYYYMMDD的出生日期計算年齡?是否可以使用<code>Date()</code>函數? </p> <p>我正在尋找比我現在使用的更好的解決方案:</p> <p><br /></p> <pre class="brush:js;toolbar:false;">var dob = '19800810'; var year = Number(dob.substr(0, 4)); var month = Number(dob.substr(4, 2)) - 1; var day = Number(dob.substr(6, 2)); var today = new Date(); var age = today.getFullYear() - year; if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) { age--; } alert(age);</pre> <p><br /></p>
P粉265724930
P粉265724930

全部回覆(2)
P粉574268989

嘗試一下。

function getAge(dateString) {
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
}

我相信你的程式碼中唯一看起來粗糙的地方就是substr部分。

Fiddlehttp://jsfiddle.net/codeandcloud/n33RJ/

#
P粉478188786

我會選擇可讀性:

function _calculateAge(birthday) { // birthday is a date
    var ageDifMs = Date.now() - birthday.getTime();
    var ageDate = new Date(ageDifMs); // miliseconds from epoch
    return Math.abs(ageDate.getUTCFullYear() - 1970);
}

免責聲明:這個方法也存在精確度問題,因此也不能完全信任。在某些年份、某些小時或夏令時(取決於時區)可能會有誤差。

如果精確度非常重要,我建議使用一個函式庫來處理這個問題。此外,@Naveens post可能是最準確的,因為它不依賴時間。


熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板