cari

Rumah  >  Soal Jawab  >  teks badan

Tajuk yang ditulis semula ialah: Kira umur berdasarkan tarikh lahir dalam format YYYYMMDD

<p>Bagaimana untuk mengira umur berdasarkan tarikh lahir dalam format YYYYMMDD? Adakah mungkin untuk menggunakan fungsi <code>Date()</code> </p> <p>Saya sedang mencari penyelesaian yang lebih baik daripada apa yang saya gunakan sekarang: </p> <p><br /></p> <pre class="brush:js;toolbar:false;">var dob = '19800810'; var tahun = Bilangan(dob.substr(0, 4)); var bulan = Bilangan(dob.substr(4, 2)) - 1; var day = Number(dob.substr(6, 2)); var today = new Date(); umur var = hari ini.getFullYear() - tahun; jika (hari ini.getMonth() < bulan || (today.getMonth() == bulan && today.getDate() < hari)) { umur--; } makluman(umur);</pra> <p><br /></p>
P粉265724930P粉265724930496 hari yang lalu416

membalas semua(2)saya akan balas

  • P粉574268989

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

    Cubalah.

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

    Saya percaya satu-satunya bahagian kod anda yang kelihatan kasar ialah bahagian substr.

    Fiddle: http://jsfiddle.net/codeandcloud/n33RJ/

    balas
    0
  • P粉478188786

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

    Saya akan memilih kebolehbacaan:

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

    Penafian: Kaedah ini juga mempunyai masalah ketepatan, jadi ia tidak boleh dipercayai sepenuhnya. Ralat mungkin berlaku pada tahun tertentu, jam tertentu atau waktu penjimatan siang (bergantung pada zon waktu).

    Jika ketepatan adalah sangat penting, saya mengesyorkan menggunakan perpustakaan untuk mengendalikan perkara ini. Juga, @Naveens post mungkin yang paling tepat kerana ia tidak bergantung pada masa.


    balas
    0
  • Batalbalas