我正在开发一个系统,要求您至少年满18岁才能注册。
为了做这个验证,我已经按照以下方式在javascript中实现了日期差异,但它不准确,是否有任何javascript函数或其他方法来执行此操作?
var d1=new Date(1985,1,28);
var d2=new Date();
var milli=d2-d1;
var milliPerYear=1000*60*60*24*365.26;
var years_old=milli/milliPerYear;
答案 0 :(得分:8)
合法地至少18岁并不是与18年的平均持续时间相对应的时间量(年份并不总是相同的长度)。这是关于您的第18个出生日期之后的当前日期。因此,您应该在生日的年份数上加18,看看这是在当前日期之前还是之后,例如
var birthDate = new Date(1985,1,28);
var today = new Date();
if (today >= new Date(birthDate.getFullYear() + 18, birthDate.getMonth(), birthDate.getDate())) {
// Allow access
} else {
// Deny access
}
您也应该在服务器端进行相同的验证。
请注意,这也会以正确的方式处理2月29日出生的人:在这种情况下,JavaScript会创建一个日期对象来代表18年后的3月1日。
答案 1 :(得分:1)
<script src="moment.min.js"></script>
<script>
var dob = new moment([1985,1,28]);
var age = new.moment().diff(dob, 'years')
if (age >= 18) {
...
}
</script>