在Javascript中计算日期会返回NaN-NaN-NaN

Calculating dates in Javascript returns NaN-NaN-NaN

本文关键字:返回 NaN-NaN-NaN 日期 计算 Javascript      更新时间:2023-12-30

我目前正在使用一个小型应用程序,该应用程序在javascript中集成了日期计算。它由3个形式元素组成。第一个元素允许用户指定他想住的夜数。第二个元素指定开始日期,第三个元素指定结束日期。一旦用户选择了入住时间,就应该将住宿天数添加到开始日期中。

这就是我在Javascript中为"end_date"计算得出的结果:

function setExpDate(formDate){
// set number of days to add
var daystoadd2 = getStayingLength();
var startDate = new Date(formDate);
var expDate = startDate;
expDate.setDate(startDate.getDate() + daystoadd2);

var totaldate = expDate;
var curr_date = expDate.getDate();
var curr_month = expDate.getMonth() +1;
var curr_year = expDate.getFullYear();
var totaldate = (curr_date + "-" + curr_month + "-" + curr_year);
document.getElementById('end_Date').value = totaldate;};

此函数由start_date字段上的onBlur事件触发。这就产生了NaN-NaN-NaN。我应该如何更改代码以使其工作?

您可以在此处找到"应用程序":Form Calculation

您的函数setDate()使用以下格式(因为Date()就是这样工作的):

setExpDate('11/29/2013');
setExpDate('November 29, 2013');
setExpDate('2013-11-29');
setExpDate('Friday November 29 2013');

如果您想使用其他格式作为输入,如19-12-2013,则必须在调用Date()之前对其进行更改。一种可能的方式:

var dateParts = formDate.split('-');
formDate = dateParts[1] + '/' + dateParts[0] + '/' + dateParts[2];
var startDate = new Date(formDate);