Nan Undefined Nan Error(Firefox,Edge和Safari)

时间:2015-12-29 12:38:51

标签: javascript html google-chrome date firefox

我已经使用这个javascript函数来计算日期输入后的一些日期。这是脚本:

processDateInput: function() {
    if(!this.dayInputVal || !this.monthInputVal || !this.yearInputVal || (this.$.dayInputCon.invalid || this.$.monthInputCon.invalid || this.$.yearInputCon.invalid)) {
    this.$.dateInputErrToast.show();
    return;
}
    var monthNames = ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"];
    var date = new Date(this.yearInputVal + "-" + parseInt(this.monthInputVal) + "-" + parseInt(this.dayInputVal)).getTime();
    var date1 = new Date(date - 24*60*60*1000*280);
    var date2 = new Date(date - 24*60*60*1000*224);
    var date3 = new Date(date - 24*60*60*1000*175);
    var date4 = new Date(date - 24*60*60*1000*105);
    var date5 = new Date(date - 24*60*60*1000*56);
    var date6 = new Date(date - 24*60*60*1000*140);
    this.date1 = date1.getDate() + " " + monthNames[date1.getMonth() ]+ " " + date1.getFullYear();
    this.date2 = date2.getDate() + " " + monthNames[date2.getMonth() ]+ " " + date2.getFullYear();
    this.date3 = date3.getDate() + " " + monthNames[date3.getMonth() ]+ " " + date3.getFullYear();
    this.date4 = date4.getDate() + " " + monthNames[date4.getMonth() ]+ " " + date4.getFullYear();
    this.date5 = date5.getDate() + " " + monthNames[date5.getMonth() ]+ " " + date5.getFullYear();
    this.date6 = date6.getDate() + " " + monthNames[date6.getMonth() ]+ " " + date6.getFullYear();
    this.$.dateResult.opened = true;
}

计算的日期显示在html槽间距中。该脚本在Chrome中运行良好,但当我在Firefox,Safari或Edge中使用该脚本时,它将返回:NaN Undefined NaN。我找不到导致这种情况的原因。

1 个答案:

答案 0 :(得分:2)

如果您的日期格式无效,则会发生这种情况。

我注意到您在月份和日期输入中使用parseInt,这意味着您将获得2016-2-6之类的结果,这不是new Date识别的有效格式。相反,您需要确保将数字填充到2016-02-06,而这应该可以正常工作。

或者,尝试:

var date = new Date(this.yearInputVal, this.monthInputVal-1, this.dayInputVal).getTime();

这应该采用年 - 月 - 日组合并给出正确的结果。