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

JSS*_*JSS 17 momentjs

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

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

dow : 1, // Monday is the first day of the week.
Run Code Online (Sandbox Code Playgroud)

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

// 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

jas*_*via 35

对于最近遇到此问题的任何人,现在支持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)
Run Code Online (Sandbox Code Playgroud)

  • 从2.8.1开始,你应该使用`moment.locale`.http://momentjs.com/docs/#/i18n/changing-locale/ (2认同)

tim*_*ood 6

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

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