Javascript 如何从jquery datepicker计算年龄?

Javascript 如何从jquery datepicker计算年龄?,javascript,jquery,html,datepicker,Javascript,Jquery,Html,Datepicker,我想在使用jquery日期选择器选择日期时计算年龄。我在下面添加了代码,但如果我选择日期如“2015年3月19日”、“2015年1月15日”或“2014年3月19日”、“2014年12月31日”,则代码显示为负值 $(document).ready(function () { console.log($(document).width()); $('#patientDob').datepicker ({ dateFormat: 'd

我想在使用jquery日期选择器选择日期时计算年龄。我在下面添加了代码,但如果我选择日期如“2015年3月19日”、“2015年1月15日”或“2014年3月19日”、“2014年12月31日”,则代码显示为负值

  $(document).ready(function () 
{
 console.log($(document).width());           
     $('#patientDob').datepicker
    ({
        dateFormat: 'dd/mm/yy',
        changeMonth: true,
        changeYear: true,
        yearRange: '1900:2150',
        maxDate: new Date(),
        inline: true,

             onSelect: function() {
               var birthDay = document.getElementById("patientDob").value;
                var DOB = new Date(birthDay);
                var today = new Date();
                var age = today.getTime() - DOB.getTime();
                age = Math.floor(age / (1000 * 60 * 60 * 24 * 365.25));

                document.getElementById('patientAge').value = age;
            }
     });  

});

AFAIK javascript日期需要yyyy/mm/dd,并且您正在发送:

 var DOB = new Date(birthDay); //  dateFormat: 'dd/mm/yy'

将格式更改为yyyy/mm/dd,即可正常工作。

如果javascript日期要求yyyy/mm/dd,您将发送:

 var DOB = new Date(birthDay); //  dateFormat: 'dd/mm/yy'

将格式更改为yyyy/mm/dd,即可正常工作。

我已为我的项目创建了此年龄计算器 使用jqueryui。和JavaScript函数。你会得到确切的结果

它将计算年龄并显示为人类可读。 创建一个ID为“datepicker”的日期字段,并导入jquery和jquery ui。之后

然后只需复制并粘贴代码即可获得准确的结果

输出//28年7个月7天

        $(function () {
        $("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            showAnim: 'slideDown',
            dateFormat: 'yy-mm-dd'
        }).on('change', function () {
            var age = getAge(this);
           /* $('#age').val(age);*/
            console.log(age);
            alert(age);

        });

        function getAge(dateVal) {
            var
                birthday = new Date(dateVal.value),
                today = new Date(),
                ageInMilliseconds = new Date(today - birthday),
                years = ageInMilliseconds / (24 * 60 * 60 * 1000 * 365.25 ),
                months = 12 * (years % 1),
                days = Math.floor(30 * (months % 1));
            return Math.floor(years) + ' years ' + Math.floor(months) + ' months ' + days + ' days';

        }

})

我已经为我的项目创建了这个年龄计算器 使用jqueryui。和JavaScript函数。你会得到确切的结果

它将计算年龄并显示为人类可读。 创建一个ID为“datepicker”的日期字段,并导入jquery和jquery ui。之后

然后只需复制并粘贴代码即可获得准确的结果

输出//28年7个月7天

        $(function () {
        $("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            showAnim: 'slideDown',
            dateFormat: 'yy-mm-dd'
        }).on('change', function () {
            var age = getAge(this);
           /* $('#age').val(age);*/
            console.log(age);
            alert(age);

        });

        function getAge(dateVal) {
            var
                birthday = new Date(dateVal.value),
                today = new Date(),
                ageInMilliseconds = new Date(today - birthday),
                years = ageInMilliseconds / (24 * 60 * 60 * 1000 * 365.25 ),
                months = 12 * (years % 1),
                days = Math.floor(30 * (months % 1));
            return Math.floor(years) + ' years ' + Math.floor(months) + ' months ' + days + ' days';

        }

})

显示负值是什么意思?我严重怀疑唯一的年龄问题是负值。例如,新日期2014年12月31日=2016年7月12日。。。阅读编辑后的答案,上次遇到问题:。我很高兴。你也可以接受这样的答案:。显示负值是什么意思?我严重怀疑唯一的年龄问题是负值。例如,新日期2014年12月31日=2016年7月12日。。。阅读编辑后的答案,上次遇到问题:。我很高兴。您也可以接受答案:。这不是完全有用的,因为它无法解释原始代码无法按预期运行的原因。只有当您的站点连接了jQuery和jQuery UI最新稳定版本,然后将此代码添加到另一个脚本中时,此代码才会起作用。这不是完全有用的,因为它无法解释原始代码无法按预期运行。只有当您的站点连接了jQuery和jQuery UI最新稳定版本,然后将此代码添加到另一个脚本中时,此代码才有效。