Heim  >  Fragen und Antworten  >  Hauptteil

Der umgeschriebene Titel lautet: Berechnen Sie das Alter anhand des Geburtsdatums im Format JJJJMMTT

<p>Wie berechnet man das Alter anhand des Geburtsdatums im Format JJJJMMTT? Ist es möglich, die Funktion <code>Date()</code> zu verwenden? </p> <p>Ich suche nach einer besseren Lösung als der, die ich jetzt verwende: </p> <p><br /></p> <pre class="brush:js;toolbar:false;">var dob = '19800810'; var Jahr = Number(dob.substr(0, 4)); var Monat = Number(dob.substr(4, 2)) - 1; var day = Number(dob.substr(6, 2)); var today = new Date(); var age = today.getFullYear() – Jahr; if (today.getMonth() < Monat || (today.getMonth() == Monat && today.getDate() < Tag)) { Alter--; } Alert(Alter);</pre> <p><br /></p>
P粉265724930P粉265724930403 Tage vor339

Antworte allen(2)Ich werde antworten

  • P粉574268989

    P粉5742689892023-08-21 15:03:33

    尝试一下。

    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/

    Antwort
    0
  • P粉478188786

    P粉4781887862023-08-21 11:57:16

    我会选择可读性:

    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可能是最准确的,因为它不依赖于时间。


    Antwort
    0
  • StornierenAntwort