如何使用moment.js获取所选语言环境的工作日数组而不更改其全局本地化?

时间:2017-11-13 16:58:14

标签: javascript momentjs

我目前正在做的是:

moment.locale(locale)
moment.weekdays(true)

但是moment.locale(locale)更改了整个时刻库的区域设置,我只想在不改变它的情况下获取不同语言环境中的工作日列表。

我尝试使用

moment.localeData(locale).weekdays()

但是您无法将true传递给“工作日”,因此结果不会对项目进行排序。例如:

moment.locale('en-us')
moment.weekdays(true) // ["Sunday", "Monday", ...

moment.locale('en-gb')
moment.weekdays(true) // ["Monday", "Tuesday", ...

但是

moment.localeData('en-us').weekdays() // ["Sunday", "Monday", ...

moment.localeData('en-gb').weekdays() // ["Sunday", "Monday", ...

没有

moment.localeData('en-gb').weekdays(true)

编辑: 看起来他们有一个关于它的公开问题,所以请同时建议你最好的黑客: https://github.com/moment/moment/issues/4066

1 个答案:

答案 0 :(得分:3)

weekday函数是区域设置感知的,所以

const weekdays = [0, 1, 2, 3, 4, 5, 6].map(dow => moment().locale('en-gb').weekday(dow).format('dddd'))

将为['Sunday', 'Monday', ...]提供数组en-us,为['Monday', 'Tuesday', ...]提供en-gb