Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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,我一直在使用以下代码,但对于JS,我是一个完全的初学者。我从后伊格索尼的代码中改编了这个,安吉拉的编辑使日期输入更加灵活 考虑到某人的出生日期,我该如何修改以月和日为单位报告其年龄 function getAge(dateString) { var now = new Date(); var today = new Date(now.getYear(),now.getMonth(),now.getDate()); var yearNow = now.getYear();

我一直在使用以下代码,但对于JS,我是一个完全的初学者。我从后伊格索尼的代码中改编了这个,安吉拉的编辑使日期输入更加灵活

考虑到某人的出生日期,我该如何修改以月和日为单位报告其年龄

    function getAge(dateString) {
  var now = new Date();
  var today = new Date(now.getYear(),now.getMonth(),now.getDate());

  var yearNow = now.getYear();
  var monthNow = now.getMonth();
  var dateNow = now.getDate();

  var dob = new Date(dateString);

  var yearDob = dob.getYear();
  var monthDob = dob.getMonth();
  var dateDob = dob.getDate();
  var age = {};
  var ageString = "";
  var yearString = "";
  var monthString = "";
  var dayString = "";


  yearAge = yearNow - yearDob;

  if (monthNow >= monthDob)
    var monthAge = monthNow - monthDob;
  else {
    yearAge--;
    var monthAge = 12 + monthNow -monthDob;
  }

  if (dateNow >= dateDob)
    var dateAge = dateNow - dateDob;
  else {
    monthAge--;
    var dateAge = 31 + dateNow - dateDob;

    if (monthAge < 0) {
      monthAge = 11;
      yearAge--;
    }
  }

  age = {
      years: yearAge,
      months: monthAge,
      days: dateAge
      };

  if ( age.years > 1 ) yearString = " years";
  else yearString = " year";
  if ( age.months> 1 ) monthString = " months";
  else monthString = " month";
  if ( age.days > 1 ) dayString = " days";
  else dayString = " day";


  if ( (age.years > 0) && (age.months > 0) && (age.days > 0) )
    ageString = age.years + yearString + ", " + age.months + monthString + ", and " + age.days + dayString + " old.";
  else if ( (age.years == 0) && (age.months == 0) && (age.days > 0) )
    ageString = "Only " + age.days + dayString + " old!";
  else if ( (age.years > 0) && (age.months == 0) && (age.days == 0) )
    ageString = age.years + yearString + " old. Happy Birthday!!";
  else if ( (age.years > 0) && (age.months > 0) && (age.days == 0) )
    ageString = age.years + yearString + " and " + age.months + monthString + " old.";
  else if ( (age.years == 0) && (age.months > 0) && (age.days > 0) )
    ageString = age.months + monthString + " and " + age.days + dayString + " old.";
  else if ( (age.years > 0) && (age.months == 0) && (age.days > 0) )
    ageString = age.years + yearString + " and " + age.days + dayString + " old.";
  else if ( (age.years == 0) && (age.months > 0) && (age.days == 0) )
    ageString = age.months + monthString + " old.";
  else ageString = "Oops! Could not calculate age!";

  return ageString;
}


alert(getAge('09/09/1989'));
函数getAge(日期字符串){
var now=新日期();
var today=新日期(now.getYear()、now.getMonth()、now.getDate());
var dearneow=now.getYear();
var monthNow=now.getMonth();
var dateNow=now.getDate();
var dob=新日期(日期字符串);
var yearDob=dob.getYear();
var monthDob=dob.getMonth();
var dateDob=dob.getDate();
变量年龄={};
var ageString=“”;
var yearString=“”;
var monthString=“”;
var dayString=“”;
yearAge=earHow-yearDob;
如果(monthNow>=monthDob)
var monthAge=monthNow-monthDob;
否则{
岁--;
var monthAge=12+monthNow-monthDob;
}
如果(dateNow>=dateDob)
var dateAge=dateNow-dateDob;
否则{
蒙太奇--;
var dateAge=31+dateNow-dateDob;
如果(蒙太奇<0){
monthAge=11;
岁--;
}
}
年龄={
年:岁,
月份:蒙太奇,
日期:日期
};
如果(age.years>1)yearString=“years”;
else yearString=“年”;
如果(年龄月数>1)monthString=“月数”;
else monthString=“month”;
如果(age.days>1)dayString=“days”;
else dayString=“day”;
如果((年龄年>0)和&(年龄月>0)和&(年龄日>0))
ageString=age.years+yearString+”、“+age.monthString+monthString+”和“+age.days+dayString+”旧。“;
如果((age.years==0)和&(age.months==0)和&(age.days>0))
ageString=“仅”+age.days+dayString+“old!”;
如果((age.years>0)和&(age.months==0)和&(age.days==0))
ageString=age.years+yearString+“old.Happy Birth!!”;
如果((年龄.年>0)和&&(年龄.月>0)和&&(年龄.天==0))
ageString=age.years+yearString+”和“+age.monthString+monthString+”旧。“;
如果((age.years==0)和(&&(age.month>0)和(&(age.days>0))
ageString=age.monthString+monthString+”和“+age.days+dayString+”旧。“;
如果((年龄.年>0)和&(年龄.月==0)和&(年龄.天>0))发生其他情况
ageString=age.years+yearString+”和“+age.days+dayString+”旧。“;
如果((age.years==0)和(&&(age.months>0)和(&(age.days==0))发生其他情况
ageString=age.months+monthString+“旧。”;
else ageString=“哎呀!无法计算年龄!”;
返回ageString;
}
警报(getAge('09/09/1989'));

您应该基本上删除代码后面部分中对“年”的所有引用,然后像这样重新编写大型if/else部分。我只更改了第48行及以下部分:

var totMonths = age.months + 12 * age.years; 
if ( totMonths > 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";


if ( (totMonths == 0) && (age.days > 0) ) {
    ageString = "Only " + age.days + dayString + " old!";
} else if ( (totMonths > 0) && (age.days == 0)) {
    ageString = totMonths + monthString + " old.";
} else if ( (totMonths > 0) && (age.days > 0))
   ageString = totMonths + monthString + " and " + age.days + dayString + " old.";
} else ageString = "Oops! Could not calculate age!";

实际上,您应该删除代码后面部分中对“年”的所有引用,然后像这样重新编写大型if/else部分。我只更改了第48行及以下部分:

var totMonths = age.months + 12 * age.years; 
if ( totMonths > 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";


if ( (totMonths == 0) && (age.days > 0) ) {
    ageString = "Only " + age.days + dayString + " old!";
} else if ( (totMonths > 0) && (age.days == 0)) {
    ageString = totMonths + monthString + " old.";
} else if ( (totMonths > 0) && (age.days > 0))
   ageString = totMonths + monthString + " and " + age.days + dayString + " old.";
} else ageString = "Oops! Could not calculate age!";
试试这个:

var dob = new Date("1/1/2016");
    var now = new Date();
    var timeMiliseconds = Math.abs(now.getTime() - dob.getTime());
    var days = Math.ceil(timeMiliseconds / (1000 * 3600 * 24)); 
    var monthsElapsed = Math.ceil(timeMiliseconds / (1000 * 3600 * 24 * 30))
    var daysElapsed = days % 30
    alert(monthsElapsed);
    alert(daysElapsed);
试试这个:

var dob = new Date("1/1/2016");
    var now = new Date();
    var timeMiliseconds = Math.abs(now.getTime() - dob.getTime());
    var days = Math.ceil(timeMiliseconds / (1000 * 3600 * 24)); 
    var monthsElapsed = Math.ceil(timeMiliseconds / (1000 * 3600 * 24 * 30))
    var daysElapsed = days % 30
    alert(monthsElapsed);
    alert(daysElapsed);

请尝试一下,然后问我们为什么它不起作用。你是在要求它将年转换为月吗?(也就是说,不是“2年2个月3周”,而是“26个月3周”?)@JonathanM就像我提到的,我是JS的完全初学者。我找到了这段代码,幸运的是它与我所寻找的有点接近,并且实际工作了。@JohnBarton是的,这就是我想要它做的。我已经将代码放在JSBin中尝试编辑它,但是我得到了一些错误,关于变量已经被定义并在范围外使用,它不会运行。请尝试一些方法,然后问我们为什么它不起作用。你是在要求它把年转换成月吗?(也就是说,不是“2年2个月3周”,而是“26个月3周”?)@JonathanM就像我提到的,我是JS的完全初学者。我找到了这段代码,幸运的是它与我正在寻找的有点接近,并且实际工作了。@JohnBarton是的,这就是我想要它做的。我已经将代码放在JSBin中尝试编辑它,但是我得到了一些错误,关于变量已经被定义并在范围外使用,它不会运行。谢谢你的帮助,现在我至少有了一个开始的地方。谢谢你的帮助,现在我至少有了一个开始的地方。