Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript处理日期对象_Javascript_Date - Fatal编程技术网

用javascript处理日期对象

用javascript处理日期对象,javascript,date,Javascript,Date,我一直在修补日期对象 我想在一天中添加一个动态天数,然后将结果日期作为变量,并将其发布到表单中 var startDate = $('#StartDate').datepicker("getDate"); var change = $('#numnights').val(); alert(change); var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDa

我一直在修补日期对象

我想在一天中添加一个动态天数,然后将结果日期作为变量,并将其发布到表单中

var startDate = $('#StartDate').datepicker("getDate");
    var change = $('#numnights').val();
    alert(change);
    var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + change);
除最后一部分外,所有操作都正确。它不会将日期添加到一天中

take this scenario:
startdate = 2011-03-01   
change = 1  
alert change = 1
endDate = 2011-03-11 *it should be 2011-03-02*
谢谢大家的快速回复

将change变量转换为整数就成功了。多谢各位

parseInt(change)

扩展一下:有没有一种方法可以将变量指定为一种类型,比如var charge(int)?

您可能是字符串连接的牺牲品

尝试将日期构造函数中的最后一个参数更改为:
startDate.getDate()+parseInt(change)


请参阅以备将来参考。

您可能成为字符串连接的牺牲品

尝试将日期构造函数中的最后一个参数更改为:
startDate.getDate()+parseInt(change)


请参阅以备将来参考。

在添加之前将
更改为数字。看起来您得到的是一个字符串串联操作,而不是代码中预期的加法。

在添加之前将
转换为数字。看起来您得到的是字符串串联操作,而不是代码中期望的加法。

我相信您是在串联,而不是使用数学运算符。试试这个

var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + (+change));

我相信你是在串联,而不是使用数学运算符。试试这个

var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + (+change));

看起来您并没有添加结束日期,而是将其浓缩为
'1'+'1'='11'

使用
parseInt()
确保使用整数

范例

var change = parseInt($('selector').val());

此外,使用此解决方案,如果您在月29日的开始日期更改为
5

看起来您没有添加结束日期,您将其浓缩为
'1'+'1'='11'

使用
parseInt()
确保使用整数

范例

var change = parseInt($('selector').val());

此外,使用此解决方案,如果您的起始日期为每月29日,并且将变量更改为整数,则很容易导致一天超出范围。然而,如果这一天进入了一个新的月份,这个月就会保持不变。例如,如果调用
var dt=newdate(2010,11,32)您的dt对象将包含2011年1月1日。日期构造函数处理月和日的溢出。我可以为您设置一个示例,看看您是否喜欢。希望此示例有助于您澄清问题://注意:月份是从0索引的。所以0=1月和11=12月这两个例子很多将变量更改为整数有效。然而,如果这一天进入了一个新的月份,这个月就会保持不变。例如,如果调用
var dt=newdate(2010,11,32)您的dt对象将包含2011年1月1日。日期构造函数处理月和日的溢出。我可以为您设置一个示例,看看您是否喜欢。希望此示例有助于您澄清问题://注意:月份是从0索引的。所以0=1月和11=12月这两个例子很多