一周的第一天 - 星期一在Date.js

时间:2013-03-03 12:29:08

标签: javascript datejs

我在Date.js库中遇到了一些问题。我使用俄罗斯文化设置。一周的第一天由1设置。这意味着,我的周应该是从周一到周日。星期一应该是我打电话时的回报: Date.getDayNumberFromName( 'понедельник'); //星期一,它应该返回0 和 Date.getDayNumberFromName( 'воскресенье'); //星期天,它应该返回6

当然,它应该是所有周计算的实际值。 例如,今天(3月3日星期日),此代码:Date.monday()应返回2月25日。 但事实并非如此。为什么?我该怎么办,改变全球“firstDayOfWeek”?

更新: 小提琴有一些问题。我在我自己的主持人身上做了一些例子:http://sulla.ru/lab/

1 个答案:

答案 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);
    };
};

显然,它解决了我的问题。我已经用这个问题制作了错误票,然后发了答案。