在下面的图片中,我展示了我实施的 2 JQuery UI datepicker ,现在我需要计算所挑选的2个日期之间的周数,并将它们放在该表单中。
我尝试在其中一个日期选择器中使用它
$('#dateF').datepicker({
dateFormat: 'dd-mm-yy',
yearRange: '-2:+2',
changeMonth: true,
changeYear: true,
//the code below this coment is the important part
onSelect: function(date, inst) {
var week = $.datepicker.iso8601Week(new Date(date));
alert(week);
}
所以我可以计算开始和结束周,然后减去它们。但是,我获得这周的方式正在给出一些没有任何意义的疯狂结果。如果有人能帮助我或者给我一些解决方法,我不知道我做错了什么我会非常感激。
答案 0 :(得分:2)
我认为问题是在Datepicker中处理格式化的日期。所以我尝试将其转换回来并且有效。试试这个:
$(function() {
$( "#from" ).datepicker({
dateFormat: 'dd-mm-yy',
yearRange: '-2:+2',
changeMonth: true,
changeYear: true
});
$( "#to" ).datepicker({
dateFormat: 'dd-mm-yy',
yearRange: '-2:+2',
changeMonth: true,
changeYear: true,
onSelect: function(date, inst) {
// convert date back to mm/dd/yy and get the week #
var dateObj = $(this).datepicker( 'getDate' );
var dateTo = $.datepicker.formatDate('mm/dd/yy', dateObj);
var weekto = $.datepicker.iso8601Week(new Date(dateTo));
var dateObj = $('#from').datepicker( 'getDate' );
var dateFrom = $.datepicker.formatDate('mm/dd/yy', dateObj);
var weekfrom = $.datepicker.iso8601Week(new Date(dateFrom));
// subtract last date from first date's week#
$('#weeks').empty().append(parseInt(weekto-weekfrom));
}
});
});
HTML:
<label for="from">From</label>
<input type="text" id="from" name="from" />
<label for="to">to</label>
<input type="text" id="to" name="to" />
<br />
Weeks: <span id="weeks"></span>
答案 1 :(得分:0)
从datepicker获取 Date ,将其转换为文本然后再将其转换回 Date 是没有意义的。直接使用它:
onSelect: function(date, inst) {
var weekto = $.datepicker.iso8601Week($(this).datepicker('getDate'));
var weekfrom = $.datepicker.iso8601Week($('#from').datepicker('getDate'));
// subtract last date from first date's week#
$('#weeks').text(parseInt(weekto - weekfrom));
}
您还应该交叉填充 minDate / maxDate 选项以确保有效的日期范围。