javascript - 年龄计算功能

标签 javascript function

我正在尝试以月、日、小时和分钟(包括闰年)计算用户的年龄。。然而,我没有使用 HTML 中的选择/选项,而是通过 Javascript 输入选项。因此,我现在对如何在 Javascript 中进行计算感到相当困惑。谁能指出我进行这些计算的正确方向?

HTML:

`  <ul class = "mainList">
    <h1>
      Age Calculator
    </h1>
    <h2> Enter Your Birthday</h2>
  <li class = "firstList">
    <p class = "datePara">
      Date:
    </p>
    <select id = "day">
    </select>
  </li>
  <li>
    <p class = "monthPara">
      Month:
    </p>
    <select id = "month">
    </select>
  </li>
  <li>
    <p class = "yearPara">
      Year:
    </p>
    <select id = "year">
    </select>
  </li>
  </ul>`

Javascript:`

var startyear = "1950";
var endyear = "2015";
var dat = new date();
var curday = dat.getDate();
var curmon = dat.getMonth() + 1;
var curyear = dat.getFullYear();


function initForm() {

  document.getElementById('day').focus();

for (var i = 1; i <= 31; i ++) {

  var thisDay = document.getElementById('day');
  var dayOption = document.createElement('option');

  dayOption.text = i;
  thisDay.add(dayOption, i);
}

for (var i = 1; i <= 12; i ++) {

  var thisMonth = document.getElementById('month');
  var monthOption = document.createElement('option');

  monthOption.text = i;
  thisMonth.add(monthOption, i);
}

for (var i = startyear; i <= endyear; i ++) {

  var thisYear = document.getElementById('year');
  var yearOption = document.createElement('option');

  yearOption.text = i;
  thisYear.add(yearOption, i);
}
}`

最佳答案

MomentJS有一个 fromNow() 函数可以自动处理这个问题,处理闰年/本地时间/等。它非常容易使用;您只需从用户输入时实例化一个“时刻”并调用 moment.fromNow() 即可。

编辑:没有时刻的替代方案:

day=document.getElementById('day').value;
month=document.getElementById('month').value;
year=document.getElementById('year').value;
birthdate=new Date(year, month-1, day); // 'month' is zero-indexed.
today = new Date();
age = (today-birthdate) / (1000*60*60*24*365.25);
// /1000 = seconds, /60=minutes, /60=hours, /24=days, /365.25=years, factor leap years

编辑:我知道您要自己实现,但无论如何,这里有一个简单的示例:

day=document.getElementById('day').value;
month=document.getElementById('month').value;
year=document.getElementById('year').value;
birthdate=new Date(year, month-1, day); // 'month' is zero-indexed.
today = new Date();
age = moment(today).diff(moment(birthdate), 'year');

您可以跳过时刻并仅获取日期对象之间的差异(today-birthdate),这将为您提供以毫秒为单位的时间间隔。使用时刻的优点是,考虑到闰年和间隔的开始日期,时间间隔将是正确的。

关于javascript - 年龄计算功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33810622/

相关文章:

javascript - 为什么 `keyof any` 在 typescript 中的类型为 `string | number | symbol`?

java - 哪个版本的 ipad 操作系统支持 ckeditor...?

sql - 从函数返回查询?

function - 云函数部署问题

javascript - 如何将焦点集中的div居中? [垂直]

javascript - 如何动态添加和删除多个字段?

javascript - 通过浏览器以编程方式确定 DPI?

c - 使用数组作为函数参数

angular - 如何从 typescript 中另一个函数的外部访问函数内部的变量?

r - Stat_function 将不接受参数列表(ggplot)