JavaScript getMonth()为月份值返回50

时间:2012-06-25 15:36:00

标签: javascript jquery

早上好帮派。

我有一个jQuery Datepicker对象,它是使用javscript Date对象预先编写的,我有getMonth()作为月份返回50,而不是5.这是之前的工作,最近是2012年4月27日。

以下是代码:

$(document).ready(function(){

$('#datepicker1').attr('readonly', 'readonly');

var press_date = new Date(); //This is the Date object that you're getting from external source

$('#datepicker1').val(press_date.getFullYear()+'-'
                     +press_date.getMonth()+1+'-'
                     +press_date.getDate());

$('#datepicker1').datepicker({
                     showAnim:'slide',showOn: 'button',
                     dateFormat : 'yy-mm-dd',
                     buttonImage: 'images/calendar.jpg',
                     buttonImageOnly: true,onSelect: function(dateText, inst) {} 
                    });
$('#datepicker').attr('readonly', 'readonly');

$('#datepicker').datepicker({
                     showAnim:'slide',showOn: 'button',
                     dateFormat : 'yy-mm-dd',
                     buttonImage: 'images/calendar.jpg',
                     buttonImageOnly: true,onSelect: function(dateText, inst) {} 
                    });
});

我的猜测是,这是一个需要解决的简单问题,但我没有在网上看到任何解释它的内容。

2 个答案:

答案 0 :(得分:3)

问题是表达式中的x.getMonth()+ 1。由于你是串联字符串,解析器会变得混乱。您可以在括号中包围x.getMonth()+ 1,或者只是将该计算移到字符串连接之外:

例如,用括号括起来:

x.getFullYear()+'-'+(x.getMonth()+1)+'-'+x.getDate()

更新:要将月份值填零,我会明确地将计算结果移动到自己的行,以便明确:

month = x.getMonth() + 1; 
monthString = month < 9 ? '0' + month : month; 
dbDate = x.getFullYear() + '-' + monthString + '-' + x.getDate();

答案 1 :(得分:0)

将代码中的一部分包含在括号中的月份中,因此JavaScript在数学意义上解释+而不是字符串连接:

$('#datepicker1').val(press_date.getFullYear() + '-' + 
                     (press_date.getMonth() + 1) + '-' + 
                     press_date.getDate());

http://jsfiddle.net/mblase75/B53u3/