MomentJS如何获得格式化,但不是本地化表示

MomentJS how to get formatted, but not localised representation?

本文关键字:本地化 表示 何获得 格式化 MomentJS      更新时间:2023-09-26

我正在使用MomentJS v2.8.4,我正在尝试获取格式化日期,例如" 31/12/2015"

myDate.format('DD/MM/YYYY')工作正常,直到我设置了一些"英语:)较少" 本地化,例如阿拉伯语。然后我得到这样的东西 ١٠/٠١/٢٠١٥ ,这对用户来说很好,对 API 来说不是那么好。

来自 MomentJS 源代码

format : function (inputString) {
    var output = formatMoment(this, inputString || moment.defaultFormat);
    // here I get correct "31/12/2015" format
    return this.localeData().postformat(output); // this will return localized version
},

格式时刻函数未公开导出...

您能为此提出正确的解决方案吗?

您可以将

当前locale()设置保存在变量中(即保存用户的设置),然后显式设置locale值,以便您可以为 API 调用获取正确的日期格式,然后将locale值设置回保存的值。

像这样:

var userLocaleSetting = moment.locale();
moment.locale('en');
var myFormattedDate = myDate.format('DD/MM/YYYY');
moment.locale( userLocaleSetting );

一种解决方案可能是返回一个带有 api 和用户格式化日期的对象。

format : function (inputString) {
    var api = formatMoment(this, inputString || moment.defaultFormat);
    // here I get correct "31/12/2015" format
    var user = this.localeData().postformat(api); // this will return localized version
   return {api: api, user: user};
},