我已经使用这个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
。我找不到导致这种情况的原因。
答案 0 :(得分:2)
如果您的日期格式无效,则会发生这种情况。
我注意到您在月份和日期输入中使用parseInt
,这意味着您将获得2016-2-6
之类的结果,这不是new Date
识别的有效格式。相反,您需要确保将数字填充到2016-02-06
,而这应该可以正常工作。
或者,尝试:
var date = new Date(this.yearInputVal, this.monthInputVal-1, this.dayInputVal).getTime();
这应该采用年 - 月 - 日组合并给出正确的结果。