datepicker.iso8601Недельное смещение - PullRequest
2 голосов
/ 20 мая 2009

Я использую datepicker.iso8601Week () для вычисления недели с выбранной даты (в указателе даты jQuery UI).

Согласно iso8601Week, неделя идет со вторника по понедельник, а мне нужно, чтобы она шла с понедельника по воскресенье. Как это можно сделать?

Ответы [ 4 ]

2 голосов
/ 20 мая 2009

Надеюсь, это поможет вам.

Извините, у меня не было достаточно времени для подробного юнит-тестирования.

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 голос
/ 20 мая 2009

Начало Понедельник

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

Старт Воскресенье

$('#date').DatePicker({
    starts: 0
});
0 голосов
/ 22 октября 2009

Начало работы 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;
   }

Этот фрагмент кода возвращает правильный номер недели для понедельника и воскресенья (а также для всех других дней) после нажатия. Если вы используете указатель даты в качестве встроенного интерфейса фильтра, вы также можете сохранить дату щелчка и отобразить календарь, начиная с позиции щелчка. Я делаю это через 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)
});

Надеюсь, что это может помочь другим, потому что, черт возьми, я потратил много времени на выяснение того, как исправить номер недели. Приветствия.

0 голосов
/ 20 мая 2009

В соответствии с JQuery UI Datepicker недели документации начинаются по понедельникам для функции iso8601Week, которая является единственной разумной вещью, если предполагается, что она соответствует стандарту ISO 8601 . Если у вас другое поведение, я бы посчитал это ошибкой. Вы можете взглянуть на реализацию здесь .

...