在JavaScript中,最简单的方法是根据用户输入以dd / mm / yyyy格式计算年龄(以年为单位)?

时间:2019-04-24 18:24:06

标签: javascript html

我想使用JavaScript计算以为单位的年龄。但是,我对JavaScript语言还是很陌生,我真的不确定从哪里真正开始使用代码。

我尝试过在线搜索答案,但是许多答案与我正在寻找的答案略有不同,并且对于我目前了解编程语言的位置也略有进步。

我在网上找到的许多答案已经有他们要计算的设定日期,但是在我的情况下,我没有设定日期,取而代之的是取决于用户在其出生日期输入的日期表格,格式为: dd / mm / yyyy

我当前尝试计算用户年龄的尝试是以下代码:

function userAge() {
  var todayDate = new Date().getMilliseconds;
  var birthDateSplit = document.getElementById("birthDate").split('/');
  var birthDate = new Date(birthDateSplit[2],birthDateSplit[1],birthDateSplit[0]);
  var day = birthDate[2]*86400000;
  var month = birthDate[1]*2629746000;
  var year = birthDate[0]*31556952000;
  var age = today - (day + month + year);

  return age;
}

我希望它根据用户的输入返回年龄,但是我的代码没有返回值。

3 个答案:

答案 0 :(得分:1)

我们可以通过两种方式解决此问题:

  1. 如果不想使用插件,则可以使用javascript dates

从字段中获取值,并将其公式化为日期。

var birthDayDate = document.getElementById("birthDate").value;
var from = birthDayDate.split("/");
var birthdateTimeStamp = new Date(from[2], from[1] - 1, from[0]);

代码示例:

var from = "15/09/1994".split("/");
var birthdateTimeStamp = new Date(from[2], from[1] - 1, from[0]);
var cur = new Date();
var diff = cur - birthdateTimeStamp;
// This is the difference in milliseconds
var currentAge = Math.floor(diff/31557600000);
// Divide by 1000*60*60*24*365.25

console.log(currentAge);

  1. 您可以在一行中用moment.js来完成它-您有CDN和NPM。
var birthDayDate = document.getElementById("birthDate").value;
const ageInYears = moment().diff(new Date(birthDayDate), 'years');
console.log(ageInYears);

const years = moment().diff(new Date('1981/01/01'), 'years');
console.log(years);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

答案 1 :(得分:0)

Date构造函数将解析您的用户输入。然后,您可以使用getTime()来获取毫秒时间。

function userAge() {
  var todayDate = new Date().getTime();
  var birthDate = new Date(document.getElementById("birthDate")).getTime();
  var age = (todayDate - birthDate) / (1000 * 60 * 60 * 24 * 365)

  return age;
}

答案 2 :(得分:0)

年龄是current_year-yyyy。

如果mm> current_month,则为-1 或mm == current_month和dd> current_day。