时刻 - 计算用户在达到某个年龄之前需要等待多长时间

时间:2018-04-04 13:09:36

标签: jquery momentjs

我一直在用时间验证用户是否是15岁零9个月。

var dobDate = moment($('#dobday').val() + "-" + $('#dobmonth').val() + "-" + $('#dobyear').val(), "DD-MM-YYYY");

var dobday = $('input[name=dobday]').val();
var dobmonth = $('input[name=dobmonth]').val();
var dobyear = $('input[name=dobyear]').val();

age = moment().diff(dobDate, 'years', true);

console.log(age); 

if (((dobday === '' || dobday === undefined) || (dobmonth === '' || dobmonth === undefined) || (dobyear === '' || dobyear === undefined))) {
    $('#qdobDate').addClass('form-group-error error');
    showerror('.dobDate.error-message');
    $('.error-summary').show();
    $('body').scrollTop(0);
    validInput = false;
}
else if ((validInput) && (age >= 15.7499999997) && (changing === "true")) {
    member.questions.dob = dobDate.toISOString();
    go('/firstapp/check-your-answers');
}
else if ((validInput) && (age >= 15.7499999997)) {
    member.questions.dob = dobDate.toISOString();
    go('/firstapp/apply-before');
}
else {
    go('/firstapp/error/age-dropout');
}

退出' / firstapp / error / age-dropout'我希望能够使用他们给我的出生日期来计算他们15岁和9个月的日期。

我是新手,我很难通过谷歌找到答案。

2 个答案:

答案 0 :(得分:0)

在这里你可以检查工作的JSFiddle,它会返回关于DOB和当前日期的年龄和月份,

您只需要处理正确的输入和日期格式。

例如:var age = getAge("1998/08/08", new Date());

http://jsfiddle.net/x9paT/932/

答案 1 :(得分:0)

由于你想要匹配15年和9个月,你可能只用几个月来计算,而不是几年(189个月比15.7499 ... 97年更容易使用)。

您可以使用moment.diff()获得自您输入的生日(以月为单位)过去的月数,就像您已使用多年一样。 new Date()将在今天提及,如果我们使用birthday.diff(today, 'month'),我们希望希望获得一个负数(除非输入日期的人来自未来) 。我们可以从189中减去这个数字,我们将在Date#setMonth()的帮助下获得一个新的约会,这将是从输入的生日起15年零9个月。

var d = 20;
var m = 10;
var y = 2010;

var birthday = moment([y, m, d]);
var when = new Date(); // Today

var months = birthday.diff(when, 'month');

if(months < 0) {
    when.setMonth(189 + months);
    alert(when);
}