我在Date.js库中遇到了一些问题。我使用俄罗斯文化设置。一周的第一天由1设置。这意味着,我的周应该是从周一到周日。星期一应该是我打电话时的回报: Date.getDayNumberFromName( 'понедельник'); //星期一,它应该返回0 和 Date.getDayNumberFromName( 'воскресенье'); //星期天,它应该返回6
当然,它应该是所有周计算的实际值。 例如,今天(3月3日星期日),此代码:Date.monday()应返回2月25日。 但事实并非如此。为什么?我该怎么办,改变全球“firstDayOfWeek”?
更新: 小提琴有一些问题。我在我自己的主持人身上做了一些例子:http://sulla.ru/lab/
答案 0 :(得分:0)
我调试了这个几乎死了的库(死了,因为上次更新大约是4年前),我发现了bug。计算移位的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);
};
};
显然,它解决了我的问题。我已经用这个问题制作了错误票,然后发了答案。