所以我试图在某个日期添加一定的天数,而且我遇到了一个奇怪的问题:
var date = new Date();
var newdate = date.getDate() + $('#ddlDays option:selected').val();
date.setDate(newdate);
因此,如果今天是09/29/2010,则日期为29.但如果用户从ddlDays中选择“5”,则会假设我在一起添加字符串,在我的约会中添加了295天。
我的印象是javascript会假设它们是整数? getDate()是返回字符串而不是整数吗?
我该如何解决这个问题?
答案 0 :(得分:4)
如果您只想将所选值添加到月中的某一天(即29 + 5),则需要将字符串值解析为int:
var newdate = date.getDate() + parseInt( $('#ddlDays option:selected').val(), 10);
但是如果你真的想要一个新的日期而不是一个int作为你的结果,你可以这样做:
date.setDate( date.getDate() + parseInt( $('#ddlDays option:selected').val(), 10);
答案 1 :(得分:2)
返回String的是.val()
。您可以使用.parseInt()
转换为数字。
var newdate = date.getDate() +
(parseInt($('#ddlDays option:selected').val(), 10) || 0);
或
var newdate = date.getDate() + ~~$('#ddlDays option:selected').val();
答案 2 :(得分:1)
不,getDate()
调用不会返回字符串,但val()
调用会返回。
您需要将字符串解析为整数:
var newdate = date.getDate() + parseInt($('#ddlDays option:selected').val(), 10);
答案 3 :(得分:1)
使用parseInt包围您的字符串值。 JavaScript会将字符串连接到数字(有关详细信息,请参阅http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference。)
这应该可以解决问题:
var newdate = date.getDate() + parseInt($('#ddlDays option:selected').val());
或
var newdate = date.getDate() + parseInt($('#ddlDays option:selected').val(), 10);
答案 4 :(得分:0)
在此question
中讨论了添加天数并将其转换为特定格式的问题