我正在尝试以月、日、小时和分钟(包括闰年)计算用户的年龄。。然而,我没有使用 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/