如何覆盖 2.10.x 版本中的 moment.js 语言环境格式,在 2.8.x 中有效

问题描述 投票:0回答:2
我使用“内部”moment.js API 来覆盖当前语言环境的格式 - 即禁用阿拉伯数字符号。所以我不会有

١١ أيلول سبتمبر ٢٠١٥ ١٩:٥٣

,而是 
11 سبتمبر/ أيلول 2015 19:53


但是升级到 v 2.10.x 后,这个内部黑客破坏了,我找不到如何挂钩并覆盖它

moment.locale("ar"); moment._locale.postformat = function (input) { return input; }; document.write(moment().format("LLL"));

v2.8.x

http://jsbin.com/faziyu/3/edit?html,js,控制台,输出

v2.10.x

http://jsbin.com/faziyu/4/edit?html,js,控制台,输出

“类型错误:无法设置未定义的属性“postformat”

提前感谢您的帮助:)

javascript momentjs
2个回答
2
投票
我知道这个问题很旧,但在我的项目中遇到过。只需使用

moment()._locale

 和方括号即可访问内部 _locale 属性。

v2.18.1:

http://jsbin.com/comosidida/embed

moment.locale("ar"); moment()._locale.postformat = function (string) { return string; }; // jshint ignore:line document.write(moment().format("LLL"));

注意:来自 moment.js 的两个版本之间的打印略有不同。

v2.8:6 2017 年 10:59

v2.18.1:6 月 2017 10:59


0
投票
最简单的方法是通过

updateLocale

 方法更新区域设置。

moment.updateLocale("en", { postformat: (string:string) => string });
    
© www.soinside.com 2019 - 2024. All rights reserved.