当前位置: 首页 > 知识库问答 >
问题:

如何计算年龄到年,月,日与js(使用js用户界面datepicker)?

岳彬炳
2023-03-14

我是JS的初学者。我可以用下面的代码计算年龄。这段代码多年来一直运行良好。如果我把日期放在任何一个月的12(例如,1950年12月14日)之后,那么它显示的是年份。现在我想展示每个人生日的年、月、日。有人能帮我吗?提前谢谢。

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

             onSelect: function() {
               var birthDay = document.getElementById("datepicker").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('agecal').innerText = age;
            }
     });  

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<div class="form-group">
  <label for="datepicker">Date of Birth: <span style="color:red">*</span></label>
  <input type="text" id="datepicker" name="date_of_birth" class="form-control" placeholder="Insert your Date of Birth...">
</div>
<div class="form-group">
  <label for="agecal">Age as On(<?php echo date('d/m/Y'); ?>): <span id="agecal" style="background-color:#60ab59;padding: 0px 50px 0px 50px;color: white;font-weight: bold; border-radius: 5px;" >0</span></label>
</div>

共有2个答案

秦景同
2023-03-14

我对您的代码做了一点修改,并通过以下方式获得了差异:

链接:https://jsfiddle.net/suvartheec/zrhpmrgs/2/

说明:我创建了一个新的日期变量,使用两次(现在和b'day)相减得到的毫秒数。这为我们提供了一个相对于1970年1月的日期(因为该日期计算为自1970年1月1日00:00:00 UTC以来经过的时间,闰秒被忽略。来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)所以我减去70,得到了年数。

        var elapsed = new Date(age);
        document.getElementById('agecal').innerText = elapsed.getYear()-70;

这是一个粗略的想法,但这应该会让你走。

编辑:更新的小提琴:https://jsfiddle.net/suvartheec/zrhpmrgs/3/

日期大于12的原因是JS中固有的日期格式是mm/dd/yy。更改datepicker配置以该格式发送日期会解决这个问题。或者,您必须在onSelect函数中对其进行转换,以使其与其他代码兼容。

希望这有帮助。

鄂琛
2023-03-14

好的,我已经解决了这个问题。首先,由于两个日期格式不相同,NaN返回。现在我将它从dd/mm/yy转换为mm/dd/yy,然后我分别用getMonth()getDay()获得月份和日期。

$(document).ready(function () 
{
 console.log($(document).width());           
     $('#datepicker').datepicker
    ({
        dateFormat: 'mm/dd/yy',
        changeMonth: true,
        changeYear: true,
        yearRange: "-100:+0",
        maxDate: new Date(),
        inline: true,

             onSelect: function() {
               var birthDay = document.getElementById("datepicker").value;
                var DOB = new Date(birthDay);
                var today = new Date();
                var age = today.getTime() - DOB.getTime();
                var elapsed = new Date(age);
                var year = elapsed.getYear()-70;
                var month = elapsed.getMonth();
                var day = elapsed.getDay();
                var ageTotal = year + " Years," + month + " Months," + day + " Days";

                document.getElementById('agecal').innerText = ageTotal;

            }
     });  

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<div class="form-group">
  <label for="datepicker">Date of Birth: <span style="color:red">*</span></label>
  <input type="text" id="datepicker" name="date_of_birth" class="form-control" placeholder="Insert your Date of Birth...">
</div>
<div class="form-group" style="margin-top:10px;">
  <label for="agecal">Age as On(<?php echo date('d/m/Y'); ?>): <span id="agecal" style="background-color:#60ab59;padding: 3px 15px 3px 15px;color: white;font-weight: bold; border-radius: 5px;" >0 Years,0 Months,0 Days</span></label>
</div>
 类似资料:
  • 本文向大家介绍php计算年龄精准到年月日,包括了php计算年龄精准到年月日的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计算年龄精准到年月日的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家学习php程序设计有所帮助。

  • 这是我的代码,从这里采取:计算年龄在JavaScript 它如何继续与月和日,如: 用户生日是:2010/04/29 结果应该是这样的:2岁4个月5天。 演示:http://jsfiddle.net/jFxb5/

  • 本文向大家介绍js+html实现周岁年龄计算器,包括了js+html实现周岁年龄计算器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js+html实现周岁年龄计算器的具体代码,供大家参考,具体内容如下 输入界面展示: 输出结果展示: 实现代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我正在尝试使用以下格式为每个人打印其年龄: 例如:19年8个月13天。 我已经在Google上搜索了很多,并且注意到有一个特定的函数可以计算日期之间的差。 但是,该功能在中不存在,因此我继续尝试使用和一些运算符。 我的尝试: 我的问题取决于日子。我不知道如何使用此函数计算天数(“尝试除以4或30”);我以为我的逻辑不好,但我无法弄清楚,有什么想法吗? 问题答案: 与Lalit的答案非常

  • 问题内容: 考虑到他们的DOB格式为dd / mm / yyyy,我正在寻找一种计算人的年龄的方法。 我一直在使用以下功能,该功能在几个月内都可以正常工作,直到某种故障导致while循环永远不会结束并且使整个站点陷入瘫痪。由于每天有近100,000个DOB多次通过此功能,因此很难确定造成此问题的原因。 有人有更可靠的年龄计算方法吗? 编辑:此函数的某些时间似乎可以正常工作,但对于14年9月14日的

  • 我正在开发一个程序,它采用开始日期和结束日期,并返回年、月和日的不同值。每个类别都有自己的代码部分,这是我一直在使用的代码,到目前为止,它一直是半精确的,直到几天(有时是几个月。我甚至不想在这一点上愚弄闰年) Ex Start:04/10/2000 End:04/10/2006应该给我6年零个月零天。 年份代码: 月份代码: 天数代码:我已经尝试了多个版本,但没有太大的成功,例如,我可以计算天数之