MomentJS获得具有可变第一天的weekNumber

时间:2017-08-19 18:18:01

标签: javascript momentjs

我试图获得一个约会的周末,但我希望它能够在一周的第一天使用变量。用户可以设置一周的第一天。我无法找到一个javascript解决方案,所以我尝试了一下。不幸的是,我无法找到设定一周第一天的方法。例如。星期天美国,星期一为欧盟,但如果它可能在任何其他日子也会很好。

1 个答案:

答案 0 :(得分:3)

Moment支持i18n,您可以change locale globallychange locales locally并根据区域设置规则更新一周的第一天。然后,您可以使用week()

  

获取或设置一年中的一周。

     

由于不同的语言环境以不同的方式定义一周中的一周,Moment.js添加了moment#week来获取/设置一年中的本地化周。

     

一年中的哪一周取决于哪一天是一周的第一天(星期日,星期一等),哪一周是一年中的第一周。

此处的示例显示同一天(例如2017-08-13)如何使用不同的区域设置具有不同的周值:



moment.locale('en');
var now2 = moment('2017-08-13');
console.log( now2.week() ); // 33

moment.locale('it');
var now1 = moment('2017-08-13');
console.log( now1.week() ); // 32

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>
&#13;
&#13;
&#13;

如果您不想更改时刻区域设置,只需使用updateLocale方法自定义一周的第一天(对于当前区域设置),只需更改dow的值即可(星期几)密钥(如果需要,还有doy密钥)week对象。请参阅文档的Customize部分,以获取有关区域设置自定义的更多信息。

这是一个实例:

&#13;
&#13;
var now1 = moment('2017-08-13');
console.log( now1.week() ); // 33

moment.updateLocale('en', {
  week: {
    dow : 1, // Monday is the first day of the week.
  }
});

var now2 = moment('2017-08-13');
console.log( now2.week() ); // 32
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;