Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript进行年龄反向计算_Javascript - Fatal编程技术网

使用Javascript进行年龄反向计算

使用Javascript进行年龄反向计算,javascript,Javascript,我想从日、月、年计算年龄。我已经做了出生日期到日、月、年的计算。但我想反向计算年龄 如果用户输入年龄: 日期:18 月份:05 年份:26 然后它将从当前日期返回原始出生日期,如DOB:10/24/1993 有很多DOB到年龄(dd-mm-yyyy)的例子,但没有年龄(dd-mm-yyyy)到DOB的例子 javascript中这种反向计算的逻辑是什么 下面是DOB的脚本,以使其变老 $("#txtDob").keyup(function () { debugg

我想从日、月、年计算年龄。我已经做了出生日期到日、月、年的计算。但我想反向计算年龄

如果用户输入年龄: 日期:18 月份:05 年份:26

然后它将从当前日期返回原始出生日期,如DOB:10/24/1993

有很多DOB到年龄(dd-mm-yyyy)的例子,但没有年龄(dd-mm-yyyy)到DOB的例子

javascript中这种反向计算的逻辑是什么

下面是DOB的脚本,以使其变老

$("#txtDob").keyup(function () {
                debugger;
                var mdate = $("#txtDob").val().toString();
                var yearThen = parseInt(mdate.substring(0, 4), 10);
                var monthThen = parseInt(mdate.substring(5, 7), 10);
                var dayThen = parseInt(mdate.substring(8, 10), 10);

                var today = new Date();
                var birthday = new Date(yearThen, monthThen - 1, dayThen);

                var differenceInMilisecond = today.valueOf() - birthday.valueOf();

                var year_age = Math.floor(differenceInMilisecond / 31536000000);
                var day_age = Math.floor((differenceInMilisecond % 31536000000) / 86400000);

                var month_age = Math.floor(day_age / 30);

                day_age = day_age % 30;

                if (isNaN(year_age) || isNaN(month_age) || isNaN(day_age)) {
                    // $("#exact_age").text("Invalid birthday - Please try again!");
                }
                else {
                    $("#txtAgeYY").val(year_age);
                    $("#txtAgeMM").val(month_age);
                    $("#txtAgeDD").val(day_age);
                    //var abc = testFunc();
                }
            });

但是我需要年龄到出生日期你可以创建一个新的日期来保存当前时间,然后减去当前年龄的年、月和日

const ageYear = 26;
const ageMonth = 5;
const ageDay = 18;

const birthDay = new Date();

birthDay.setFullYear(birthDay.getFullYear() - ageYear);
birthDay.setMonth(birthDay.getMonth() - ageMonth);
birthDay.setDate(birthDay.getDate() - ageDay);

检查下面的javascript部分将执行您想要的操作

<!DOCTYPE html>
<html>
 <body>

  <p id="demo"></p>

  <script>
   var ageYears = 26;
   var ageMonths = 5;
   var ageDays = 18;
   var today = new Date();
   var year = today.getFullYear();
   var month = today.getMonth();
   var day = today.getDate();
   var dob = new Date(year - ageYears, month - ageMonths, day - ageDays);
   document.getElementById("demo").innerHTML = "DOB: " + dob;
 </script>

</body>

var年龄=26岁; 风险价值月数=5; var ageDays=18; var today=新日期(); var year=today.getFullYear(); var month=today.getMonth(); var day=today.getDate(); var dob=新日期(年-年、月-月、日-日); document.getElementById(“demo”).innerHTML=“DOB:”+DOB;

显示您的脚本,如果不显示脚本,这很难回答。我将DOB的脚本添加到Age,但我希望从当前日期开始将Age添加到DOB。请告诉我逻辑。该脚本似乎以天、月和年为单位计算用户的年龄。txtAgeYY、txtAgeMM和txtAgeDD不打算单独输入出生日期。第二,它像RTL输入一样处理
#txtDob
。我想说的是,你甚至没有尝试测试你发布的代码块,但是它返回了错误的DOB,我认为闰年计算不正确。你计算年龄的例子没有正确计算年龄。不应使用毫秒差然后除以31536000000。年份有不同的毫秒数,如你所说的闰年。试着计算一个人26岁和1993年10月24日出生的确切时刻的年龄。他将于2019年10月24日年满26岁,对吗?你的算法给出了26年零6天当前常数=新日期(2019年10月24日);常数出生=新日期(1993年10月24日);const diff=当前.valueOf()-出生.valueOf();施工年份=数学楼层(差异/31536000000);施工日期=数学楼层(差异%31536000000)/86400000);console.log(year_age,day_age)`我试过你的代码,它显示的是1993年10月16日,应该是1993年10月24日。你能正确编辑一下你的代码吗?今天我们是
4/3/2020
,年龄是26岁,5个月,18天。从现在开始减去18天=>2020年3月16日减去5个月=>2019年10月16日减去26年=>1993年10月16日,而不是1993年10月24日。您从BOD计算日期的算法错误。它还返回1993年10月16日星期六00:00:00 GMT+0530(印度标准时间),而不是1993年10月24日星期六00:00:00 GMT+0530(印度标准时间):(你们是对的,实际上我的DOB到年龄逻辑不正确。谢谢:)@Vidhya请检查您基于DOB的年龄计算是否正确。我有26年5个月零9天。