将日期添加到日期 - 将日期转换为字符串

时间:2010-09-29 21:09:48

标签: javascript jquery

所以我试图在某个日期添加一定的天数,而且我遇到了一个奇怪的问题:

var date = new Date();

var newdate = date.getDate() + $('#ddlDays option:selected').val();

date.setDate(newdate);

因此,如果今天是09/29/2010,则日期为29.但如果用户从ddlDays中选择“5”,则会假设我在一起添加字符串,在我的约会中添加了295天。

我的印象是javascript会假设它们是整数? getDate()是返回字符串而不是整数吗?

我该如何解决这个问题?

5 个答案:

答案 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

中讨论了添加天数并将其转换为特定格式的问题