Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
使用简单的JS函数和方法在Javascript中计算年龄_Javascript_Date - Fatal编程技术网

使用简单的JS函数和方法在Javascript中计算年龄

使用简单的JS函数和方法在Javascript中计算年龄,javascript,date,Javascript,Date,我正在用JS写一个程序来寻找年龄。函数calculateAge()的参数为日、月、年(人的出生日期),输出应为人的年龄。 我尝试了以下代码 let calculateAge = function(day, month, year){ var myBirthDate = new Date(calculateAge), myBirthYear = myBirthDate.getFullYear(), myBirthMonth = myBirthDate.get

我正在用JS写一个程序来寻找年龄。函数
calculateAge()
的参数为日、月、年(人的出生日期),输出应为人的年龄。 我尝试了以下代码

  let calculateAge = function(day, month, year){
      var myBirthDate = new Date(calculateAge),
      myBirthYear = myBirthDate.getFullYear(),
      myBirthMonth = myBirthDate.getMonth(),
      myBirthDay = myBirthDate.getDay()
      let currentDate = new Date(),
      currentYear = currentDate.getFullYear(),
      currentMonth = currentDate.getMonth(),
      currentDay= currentDate.getDay()
      var age = currentYear - myBirthYear
      var ageMonth = currentMonth - myBirthMonth
      var ageDay = currentDay-myBirthDay
      if (ageMonth<0 || (ageMonth == 0 && ageDay<0)){
      age = parseInt(age)-1
      }
    
    }; alert (calculateAge(24,04,1993))
let calculateAge=函数(日、月、年){
var myBirthDate=新日期(calculateAge),
myBirthYear=myBirthDate.getFullYear(),
myBirthMonth=myBirthDate.getMonth(),
myBirthDay=myBirthDate.getDay()
设currentDate=新日期(),
currentYear=currentDate.getFullYear(),
currentMonth=currentDate.getMonth(),
currentDay=currentDate.getDay()
变量年龄=当前年份-我的出生年份
var ageMonth=当前月份-我的出生月份
var ageDay=当前日期我的生日

首先,欢迎使用堆栈溢出

您已接近计算年龄。您没有将函数参数传递到
Date
构造函数中,以及其他一些小问题,例如尝试对已为整数的值使用
parseInt

let calculateAge=函数(日、月、年){
var myBirthDate=新日期(年、月-1、日),
myBirthYear=myBirthDate.getFullYear(),
myBirthMonth=myBirthDate.getMonth(),
myBirthDay=myBirthDate.getDay();
var currentDate=新日期(),
currentYear=currentDate.getFullYear(),
currentMonth=currentDate.getMonth(),
currentDay=currentDate.getDay();
var ageMonth=当前月份-我的出生月份;
var ageDay=当前日期-我的生日;
变量年龄=当前年份-我的出生年份;
if(ageMonth<0 | |(ageMonth==0&&ageDay<0)){
年龄=年龄-1;
}
回归年龄;
};

首先,欢迎来到堆栈溢出

您已接近计算年龄。您没有将函数参数传递到
Date
构造函数中,以及其他一些小问题,例如尝试对已为整数的值使用
parseInt

let calculateAge=函数(日、月、年){
var myBirthDate=新日期(年、月-1、日),
myBirthYear=myBirthDate.getFullYear(),
myBirthMonth=myBirthDate.getMonth(),
myBirthDay=myBirthDate.getDay();
var currentDate=新日期(),
currentYear=currentDate.getFullYear(),
currentMonth=currentDate.getMonth(),
currentDay=currentDate.getDay();
var ageMonth=当前月份-我的出生月份;
var ageDay=当前日期-我的生日;
变量年龄=当前年份-我的出生年份;
if(ageMonth<0 | |(ageMonth==0&&ageDay<0)){
年龄=年龄-1;
}
回归年龄;
};
使用实验方案:

const calculateAge=(日、月、年)=>{
const birth=Temporal.DateTime.from({day,month,year});
const today=Temporal.DateTime.from(Temporal.now.date());
今天返回。差异(生日,{最大单位:'年'})。年;
}
计算(24,4,1993);/27
使用实验方案:

const calculateAge=(日、月、年)=>{
const birth=Temporal.DateTime.from({day,month,year});
const today=Temporal.DateTime.from(Temporal.now.date());
今天返回。差异(生日,{最大单位:'年'})。年;
}
计算(24,4,1993);/27


欢迎来到SO,希望您有一个良好的学习曲线。您认为这里的代码流是什么?这回答了您的问题吗?这回答了您的问题吗?据我所知,参数只是数字,我希望JS将参数视为日期。由于默认的日期格式是yyyy mm dd,JS采用函数参数ers和其他一些数字一样。因为,我希望用户将他的DOB作为dd,mm,yyyy,日期格式应该更改。@shryas,我认为在新的日期()中我应该传递参数,即日、月、年,而不是函数本身。是这样吗?欢迎来到SO,希望你有一个良好的学习曲线。你认为这里的代码流是什么?这回答了你的问题吗?这回答了你的问题吗?在我的理解中,参数只是数字,我希望JS来处理参数rs作为日期。由于默认的日期格式是yyyy mm dd,JS采用的函数参数与其他一些数字一样。因为,我希望用户将其DOB作为dd,mm,yyyy,所以应该更改日期格式。@shryas,我认为在新的日期()中我应该传递参数,即日、月、年,而不是函数本身。是这样吗?你好,罗伯特,谢谢你的回答和更正代码。还有一个问题-是否有必要在Java脚本中使用YY-mm-dd格式的日期?因为在印度,约定是dd,mm,yyyy。那么有什么方法可以更改格式吗在印度惯例中,您需要将参数以年、月、日(按该顺序)的形式传递给
Date
构造函数。如果要格式化日期,有几种方法:由于ECMAScript月份是以零为基础的,OP可能需要
新日期(年、月-1、日)
。添加到同一代码中,而不是在函数调用中传递值,如果我要求用户给出他/她的生日,然后在函数调用中传递提示值,则输出为NaN。为什么输出不是数字?既然我要求用户给出他的生日,那么他无论如何都会给出日期、月份和年份。@shreyograjopadhye您需要确保使用数字而不是字符串调用
calculateAge
。确保当您收到用户的值时,将任何字符串转换为数字。你好,Robert,感谢您的回答和更正代码。还有一个问题-是否需要在Java脚本中使用yyyy-mm-dd格式的日期?因为她在印度,约定是dd,mm,yyyy。那么有什么方法可以更改印度约定的格式吗?您需要将参数作为年、月、日(按该顺序)传递给
Date
构造函数