如何为Moment.js语言环境添加新的格式选项?
我希望能够将日期格式化为日期和缩短的月份。 (例如:9月20日en-gb,9月20日en)。然而,Moment.js最接近我们的格式'll',即2017年9月20日的本地化格式。我希望能够创建一个排除'll'年的新格式。我怎样才能最好地实现这一点?如何为Moment.js语言环境添加新的格式选项?
最终的结果我想(假设今天是9月20日):
moment.locale('en');
moment().format('my-new-format') ---> Sep 20
moment.locale('en-gb');
moment().format('my-new-format') ---> 20 Sep
moment().format('ll') ---> 20 Sep, 2017
可以覆盖使用内置的updateLocale
moment.updateLocale('en', {
longDateFormat : {
LT: "h:mm A",
LTS: "h:mm:ss A",
L: "MM/DD/YYYY",
l: "M/D/YYYY",
LL: "MMMM Do YYYY",
ll: "MMM D YYYY",
LLL: "MMMM Do YYYY LT",
lll: "MMM D YYYY LT",
LLLL: "dddd, MMMM Do YYYY LT",
llll: "ddd, MMM D YYYY LT"
}
});
如果你不希望覆盖本地化已经存在的语言环境,但仍然使用它,我会去这样的字典,因为我不知道添加新格式。
const formats = {
en: "MMM D",
sv: "DD MMM"
}
const customFormat() => formats[moment.locale()];
moment.locale("en");
console.log(moment().format(customFormat())); // Jan 1
moment.locale("sv");
console.log(moment().format(customFormat())); // 01 Jan
请提供更多的答案,然后只是一个链接,这是因为如果链接失败,这不再是一个有用的答案 –
LPL,我假设你指向updateLocale(),但我不认为这会为我想要的工作(纠正我,如果我错了)。我不想改变'll',我想保持'll',但添加一个全新的格式。看起来,updateLocale()只允许您更改现有格式,但不允许添加新格式。 – breakfast
是的,我明白了,我认为不幸的是,有任何内容可以建立。在这种情况下,我会用自定义格式的字典来处理它,例如'let custom = {en:“MM D”,sv:“D MM”},然后使用'moment.locale()'中的构建和通过'moment.format(自定义[moment.locale()])解决它' – LPL
希望这有助于(类似的问题) - https://*.com/questions/39028993/custom-long-date-format-in-moment-js –
这绝对是一个类似的问题!但是,答案不是太有用(除了提供更多的证据,也许我不想解决这个问题是不可能的)。我不想直接编辑库文件或区域设置文件。 – breakfast