我有一个jquery datepicker,它以dd / mm / yyyy格式化日期。当有人输入日期,选择日期和加载时,我需要显示月份名称。我很难得到这个月。 myDate是附加到datepicker的文本框。我有这个:
var date = new Date($("#myDate").val());
alert(date.getDate());
alert(date.getMonth());
alert(date.getDay());
alert(date.getYear());
当我以18/07/2011的日期运行时,我的月份为5,当天为4,日期为7,年份为112,这都非常奇怪。我究竟做错了什么?我需要做的就是动态地将月份标签更改为使用datepicker选择/输入的月份,即7月...
答案 0 :(得分:3)
要从datepicker获取日期,您应该使用$("#myDate").datepicker("getDate")
。虽然你目前正在做的是构建一个JavaScript Date对象,它可能以错误的方式解释.val()。
答案 1 :(得分:1)
使用
$('#myDate').datepicker('getDate')
以更安全的方式获取JavaScript日期对象。此外,getMonth()将返回零索引的月份,因此7月将返回为“6”。要返回全年,您应该使用:.getFullYear()
javascript“new Date()”没有以正确的日期格式解析它。如果您正确设置了日期选择器的日期格式,那么当您使用它的'getDate'方法时,窗口小部件将为您完成工作。
您的代码将成为:
var date = $("#myDate").datepicker('getDate');
alert(date.getDate()); // Day of the month
alert(date.getMonth()); // Month with a zero index
alert(date.getDay()); // Day of the week
alert(date.getFullYear()); // The "full" year, e.g. 2011
//更新了选择列表的解决方案
从下拉列表中选择正确的值很大程度上取决于您如何设置值。即如果值为:
<select id="MySelect">
<option value="1">Jan</option>
</select>
然后你可以这样做:
$('#MySelect').val((date.getMonth() + 1));
这将选择指定的月份。但是,如果您的值是月份名称的某种变化,即:
<select id="MySelect">
<option value="Jan">Jan</option>
</select>
然后你需要一个函数来映射从月号到它的名字,如:
var months = ['Jan', 'Feb', 'Mar', ...etc }
function getMonthShortName(month) {
return months[month];
}
$('#MySelect').val(getMonthShortName(date.getMonth()));