我希望能够将日期格式化为日期和缩短的月份。 (例如: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
答案 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