momentJS 默认语言环境是 zh-tw 并且似乎无法覆盖它

momentJS default locale is zh-tw and can't seem to overwrite it

我正在从我的 Angular 应用程序的 CDN 中提取 momentJS 库:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>

默认语言环境应该是英语 ('en')。但出于某种原因,我的应用程序中的默认语言环境是 'zh-tw'。我发现这曾经是个问题(请参阅 here and here),但据说已修复。

即使我手动设置了全局语言环境,它也会被忽略:

在我的 index.html 文件中:

<script>
    moment.locale('en');
</script>

在我的 Angular 控制器中:

moment.locale('en');

现在唯一可行的是,如果我在每个时刻实例上设置语言环境:

var moment1 = moment(myDate);
moment1.locale('en');
var moment2 = moment(moment1).add(24, 'h');
moment2.locale('en');

如果您使用的是 Angular,通常对我有用的是这个

.run(["moment", function(moment){
    moment.locale("en");
}]);

我知道这个问题是去年发布的,但对于遇到 zh-tw 格式问题的所有用户来说,以下内容值得注意。

今天我在使用格式化方法时遇到了这个问题。幸运的是,在过去几天内,这个问题得到了更永久的修复。

您遇到的问题最初在 2013 年(大约)得到解决,并发布了后续更新。无论出于何种原因,问题在 before/around 更新 2.10.3 的某个时候又出现了,此后一直是一个问题。然而,在 2016 年 1 月 2 日,他们发布了一个更新,随后解决了人们遇到的问题。更新到 Moment 2.11.0 将解决默认为 zh-tw 的语言并将其默认恢复为 en

虽然当时接受的答案是修复,但我建议您更新到最新版本的 Moment,因为从我的角度来看,解决您的问题需要一些技巧。

Moment 2.11.0 的所有变化请访问以下link,您感兴趣的问题在ID #2735.

Moment 2.11.0 - Changelog