Moment.js一周的第一天不正确

时间:2013-04-18 10:49:36

标签: momentjs

我第一次和Moment.js合作。我试图找回一周中第一天的日期,而在欧洲,这通常是星期一。无论我做什么,我都会在周日的第一天得到周日。

我试图设置不同的语言(本地或全球),但无济于事。我使用moment.js github page中的langs.min.js文件。 “en-gb”和"fr"的语言文件包含以下代码行:

dow : 1, // Monday is the first day of the week.

所以当我要求一周的第一天正确时,我会得到星期一的日期吗?我一直把周日作为输出。

// Create moment object
var localLang = moment();

// Set language to french
localLang.lang('fr');

// Test language
localLang.lang(); // Output: fr

// Retrieve first day of the week and format it
var dow = localLang.startOf('week').format('dddd DD-MM-YYYY'); // Output: dimanche 14-04-2013

Dimanche周日是法语。如你所见,moment.js可以成功使用语言文件,但不使用星期几的配置

JS调用moment.js和langs.js进行测试: JSFiddle

编辑: 我可以使用day(1)代替startOf('week')获取星期一而不是星期日的日期。但是使用day(0)我仍然得到星期天的结果。为什么不是星期一的第一天,如语言文件中所配置的那样。

3 个答案:

答案 0 :(得分:33)

对于最近遇到此问题的任何人,现在支持lang方法来设置特定于语言环境的设置。

将第一周设为星期一:

moment.lang('zh-cn', {
    week : {
        dow : 1 // Monday is the first day of the week
    }
});

var date = moment().weekday(0); // date now is the first day of the week, (i.e., Monday)

答案 1 :(得分:6)

我们正在努力添加区域设置感知的工作日,但尚未完成。

https://github.com/timrwood/moment/issues/613#issuecomment-13786429

答案 2 :(得分:-3)

我设法让它发挥作用。我使用下面的代码:

    $(#id_Of_Element).daterangepicker({
        weekStart: 2,

        locale: {
            customRangeLabel: 'Custom Range',
            daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
            monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
            firstDay: 1
        }
});