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

时间:2013-12-01 15:17:39

标签: javascript datetime

我目前正在使用一个小应用程序,它在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

1 个答案:

答案 0 :(得分:1)

你的函数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);