在moment js中自定义长日期格式

custom long date format in moment js

本文关键字:日期 格式 自定义 moment js      更新时间:2023-09-26

是否有一种方法可以根据区域设置为长日期添加自定义格式代码?

例如:

moment().format("L")

是一种现有的格式,它将打印区域设置(包括年份)的长日期,但是如果我想添加我自己的不包括年份的格式,如下所示:

moment().format("LTY")只打印给定语言环境中的月份和日期。

我该怎么做?

阅读长日期格式部分。您可以使用

来替换默认的长日期格式对象:
moment.updateLocale('en', {
                    longDateFormat : {
                    LT: "h:mm A",
                    LTS: "h:mm:ss A",
                    L: "MM/DD",         // Remove year
                    LL: "MMMM Do YYYY",
                    LLL: "MMMM Do YYYY LT",
                    LLLL: "dddd, MMMM Do YYYY LT"
                }
});

然后使用:

var x = moment().format('L');

Moment解析传递给format的字符串,查找令牌。如果你想添加一个自定义令牌,比如"LTY",你还需要将它添加到本地格式化令牌列表中:

var localFormattingTokens = /('[[^'[]*'])|('')?(LTS|LT|LL?L?L?|l{1,4})/g;

将变为(LTY added):

var localFormattingTokens = /('[[^'[]*'])|('')?(LTY|LTS|LT|LL?L?L?|l{1,4})/g;

并使用新的令牌更新默认的长日期格式:

    var defaultLongDateFormat = {
    LTY  : 'MM/DD HH:mm',   // format for new token
    LTS  : 'h:mm:ss A',
    LT   : 'h:mm A',
    L    : 'MM/DD/YYYY',
    LL   : 'MMMM D, YYYY',
    LLL  : 'MMMM D, YYYY h:mm A',
    LLLL : 'dddd, MMMM D, YYYY h:mm A'
};

然后,如果你想要其他格式:

moment.updateLocale('en', {
                    longDateFormat : {
                    LTY: 'MM/DD HH:mm',  // new format for token here
                    LT: "h:mm A",
                    LTS: "h:mm:ss A",
                    L: "MM/DD/YYYY",
                    LL: "MMMM Do YYYY",
                    LLL: "MMMM Do YYYY LT",
                    LLLL: "dddd, MMMM Do YYYY LT"
                }
});

最后:

var x = moment().format('LTY');

,但你必须检查它会对其他代码产生什么影响。此外,每次更新moment.js源代码时,您都必须应用相同的更改,不能使用CDN,您的代码将无法使用标准的moments .js库移植到其他网站。

所以坚持使用updateLocale的方法。或者直接输入:

var LTY = 'MM/DD HH:mm';
var d = new moment().format(LTY);
console.log(d)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>

你就完成了。

注意这里使用"locale"是用词不当。格式首选项与用户所在的位置(即他们的区域设置)无关,"en"是一种在大量区域中使用的语言,这些区域对如何格式化日期有非常不同的首选项。