用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月这两个例子很多