2013-03-03 2 views
1

У меня есть проблема с библиотекой Date.js. Я использую настройки русской культуры. Первый день недели установлен на 1. И это означает, что моя неделя должна быть с понедельника по воскресенье. Понедельник должен быть возвратом vaue, когда я звоню: Date.getDayNumberFromName ('понедельник'); // Понедельник, он должен вернуть 0 и Date.getDayNumberFromName ('воскресенье'); // Воскресенье, он должен вернуть 6Первый день недели - понедельник в Date.js

и, конечно же, это должно быть актуально для расчета всех недель. Например, сегодня (воскресенье, 3 марта) этот код: Date.monday(), должен вернуться 25 февраля. Но это не так. Зачем? Что мне делать, чтобы изменить глобальный «firstDayOfWeek»?

Обновление: Есть проблемы со скрипкой. Я сделал пример на своем собственном компьютере: http://sulla.ru/lab/

ответ

0

Я сделал отладочную версию этой почти мертвой библиотеки (мертвой, потому что последнее обновление было около 4 лет назад), и я обнаружил ошибку. SDF функция, которая вычисляет сдвиг, так:

var sdf = function (n) { 
    return function() { 
    var t = $D.today(), shift = n - t.getDay(); 
     if (n === 0 && $C.firstDayOfWeek === 1 && t.getDay() !== 0) { 
      shift = shift + 7; 
     } 
     return t.addDays(shift); 
    }; 
}; 

и я изменил его:

var sdf = function (n) { 
    return function() { 
     var t = $D.today(), shift = n - t.getDay(); 

     if (n === 0 && $C.firstDayOfWeek === 1 && t.getDay() !== 0) { 
      shift = shift + 7; 
     } else if (t.getDay() === 0 && n !== 0) { 
      shift = shift - 7; 
     } 
     return t.addDays(shift); 
    }; 
}; 

Очевидно, что это решает мою проблему. Я сделал ошибку с этой проблемой и отправил ответ.

Смежные вопросы