【问题标题】:Moment.js first day of the week incorrectMoment.js 一周的第一天不正确
【发布时间】:2013-04-18 10:49:35
【问题描述】:

我是第一次使用 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 可以成功使用语言文件,但不使用星期配置

JSfiddle 用 moment.js 和 langs.js 来测试: JSFiddle

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

【问题讨论】:

    标签: momentjs


    【解决方案1】:

    对于最近遇到这个问题的人,现在支持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)
    

    【讨论】:

    • 从 2.8.1 开始,您应该使用 moment.localemomentjs.com/docs/#/i18n/changing-locale
    • moment().week() 完成后这不起作用??
    • moment.defineLocale 现在也很流行
    • 使用isoweek 代替week 也是一种解决方案。
    【解决方案2】:

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

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

    【讨论】:

    • 现在完成了吗?
    • 2016 年的行为相同。
    猜你喜欢
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    相关资源
    最近更新 更多