17

我第一次使用 Moment.js。我试图检索一周的第一天的日期,而在欧洲,这通常是星期一。无论我做什么,我都会在一周的第一天得到星期天。

我尝试设置不同的语言(本地或全球),但无济于事。我使用来自moment.js github 页面的 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 可以成功使用语言文件,但不使用星期几配置

JSfiddle 与 moment.js 和 langs.js 进行测试: JSFiddle

编辑:我可以得到星期一的日期而不是星期日的日期,而day(1)不是startOf('week'). 但是使用day(0)我仍然得到星期天。为什么星期一不是语言文件中配置的一周的第一天。

4

3 回答 3

36

对于最近遇到此问题的任何人,现在支持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)
于 2014-03-31T05:47:54.250 回答
6

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

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

于 2013-04-18T16:44:45.217 回答
-4

我设法让它工作。我使用了下面的代码:

    $(#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
        }
});
于 2014-07-28T13:39:54.603 回答