2

我正在使用 datepicker.iso8601Week() 来计算从选定日期开始的星期(在 jQuery UI datepicker 中)。

根据iso8601Week,一周从周二到周一,我需要从周一到周日。如何实现?

4

4 回答 4

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;
};
于 2009-05-20T15:34:41.460 回答
1

周一开始

$('#date').DatePicker({
    starts: 1
});

周日开始

$('#date').DatePicker({
    starts: 0
});
于 2009-05-20T14:27:33.313 回答
0

根据JQuery UI Datepicker 文档,该iso8601Week函数从星期一开始,如果它应该遵循ISO 8601 标准,这是唯一理智的事情。如果您有不同的行为,我会认为这是一个错误。你可以看看这里的实现。

于 2009-05-20T16:09:20.503 回答
0

让 datepiker 与 Drupal 日历一起工作我发现每周过滤工作不正确,因为 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;
   }

这段代码在点击后返回周一和周日(以及所有其他日子)的正确周数。如果您使用 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)
});

希望这可以帮助其他人,因为我花了很多时间来弄清楚如何修复周数。干杯。

于 2009-10-22T01:06:33.443 回答