如何在Moment.js语言环境中添加新的格式选项?

时间:2017-09-20 01:35:42

标签: javascript momentjs

我希望能够将日期格式化为日期和缩短的月份。 (例如:9月20日为en-gb,9月20日为en)。但是,Moment.js最接近的本地化格式是我们的格式' ll'这是2017年9月20日en。我希望能够创建一种新的格式,将“年”排除在“#”之外。我怎样才能最好地实现这个目标?

我想要的最终结果(假设今天是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

2 个答案:

答案 0 :(得分:3)

这似乎与我合作...:

moment.updateLocale("en", { longDateFormat : { "[my-new-format]" : "MMM D" } });
moment.updateLocale("en-gb", { longDateFormat : { "[my-new-format]" : "DD MMM" } });

然后

moment.locale('en');
moment().format('[my-new-format]');

因此,您不会覆盖现有格式。

答案 1 :(得分:2)

您可以使用内置的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