我正在使用datepicker.iso8601Week()来计算所选日期的一周(在jQuery UI datepicker中)。
根据iso8601Week,一周从周二到周一,我需要它从周一到周日。如何实现这一目标?
答案 0 :(得分:2)
希望这可以帮到你。
抱歉,我没有足够的时间进行详细的单元测试。
function getDateRangeOfWeek(week){
var date = new Date();
var currentWeek = $.datepicker.iso8601Week(date);
date.setDate(date.getDate() - date.getDay() + 1 + (7 * (week - currentWeek)));
var result = [];
for(var i = 0;i < 7;i++){
var d = new Date();
d.setDate(date.getDate() + i)
result[i] = d;
}
return result;
};
答案 1 :(得分:1)
从星期一
开始$('#date').DatePicker({
starts: 1
});
从星期日
开始$('#date').DatePicker({
starts: 0
});
答案 2 :(得分:0)
根据JQuery UI Datepicker文档星期一开始的iso8601Week
函数周,这是唯一理智的事情,如果它应该遵循ISO 8601 standard。如果你得到不同的行为我会认为这是一个错误。您可以查看实施here。
答案 3 :(得分:0)
让datepiker使用Drupal Calendar我发现每周过滤工作不正确,因为datepicker.iso8601Week函数返回了无效值。好吧,我的周从星期三开始,尽管有官方文档等所有事实:)这就是问题所在。我完成了以下技巧:
var date = $.datepicker.iso8601Week(new Date(dateText));
var dateDay = $.datepicker.formatDate('D', new Date(dateText));
if (dateDay == 'Mon' || dateDay == 'Sun') {
date = date+1;
}
这段代码会在点击后返回Mon和Sun(以及所有其他日期)的正确周数。如果使用datepicker作为内联过滤器界面,您可能还希望保留单击日期并从单击位置开始显示日历。我通过末尾的月份名称的确切长度的URL来实现:
var setMon = window.location.pathname.slice(20);
var setDay = window.location.pathname.slice(17,19);
var setYear = window.location.pathname.slice(8,12);
$('.datep').datepicker({
defaultDate: $.datepicker.parseDate("dd MM y", setDay+" "+setMon+" "+setYear)
});
希望可以帮助别人,因为我花了很多时间来弄清楚如何解决周数。欢呼声。