JavaScript Date()格式和计算
我想从JavaScript Date()格式和计算,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我想从input中获取日期,当通过引导日期选择器进行设置时,格式为dd-mm-yyyy,并基于此日期计算周末。不知怎的,我得到了一些奇怪的结果 $('#date-start').on('changeDate', function(){ var objThs = $(this); if(objThs.parent().is('.reportDateWeeks')){ var arrDateEl = objThs.val().split("-
input
中获取日期,当通过引导日期选择器进行设置时,格式为dd-mm-yyyy,并基于此日期计算周末。不知怎的,我得到了一些奇怪的结果
$('#date-start').on('changeDate', function(){
var objThs = $(this);
if(objThs.parent().is('.reportDateWeeks')){
var arrDateEl = objThs.val().split("-"),
datStartDate = new Date(arrDateEl[2], arrDateEl[1] -1, arrDateEl[0]),
datEndDate= new Date(datStartDate.setDate(datStartDate.getDate()+7)),
datEndDateFormated = datEndDate.getDate() + '-' + datEndDate.getMonth() + 1 + '-' + datEndDate.getFullYear();
console.log('start ' + objThs.val());
console.log('end' + datEndDateFormated);
}
});
e、 g.如果我选择2014年5月4日,则console返回我:
2014年5月4日开始
2014年11月41日结束我发现两个问题
datEndDate.getMonth()+1
周围添加括号。否则,1
将作为字符串而不是数字添加(在您的示例中生成41
)var datEndDateFormated = (datEndDate.getMonth() + 1) + '-'
+ datEndDate.getDate() + '-'
+ datEndDate.getFullYear();
好的,我找到了解决办法
datEndDateFormated = datEndDate.getDate() + '-' + datEndDate.getMonth() + '-' + datEndDate.getFullYear();
我真是瞎了。。抱歉,使用parseInt方法将字符串转换为整数,然后再将+1转换为整数
datEndDateFormatted = datEndDate.getDate() + '-' + parseInt(datEndDate.getMonth() + 1) + '-' + datEndDate.getFullYear();
这似乎不是一个有效的解决办法。您需要
+1
,日期和月份仍然是切换的。用括号括起来是个好主意,但是使用parseInt可以更可靠地使用数据类型。@Vimal为什么需要parseInt
getMonth()
始终返回一个数字<代码>1始终是一个数字。无论如何,结果将用作字符串。我看不出有什么意义。