javascript-瞬间js中的自定义长日期格式
作者:互联网
有没有一种方法可以根据区域设置将自定义格式代码添加到很长的时间?
例如:
矩().格式( “L”)
是一种现有格式,将打印区域设置的长日期(包括年份),但是如果我想添加自己的排除日期的日期,例如:
moment().format(“ LTY”)刚刚在给定的语言环境中打印了月份和日期.
我怎样才能做到这一点?
解决方法:
阅读有关long date formats的部分.您将使用以下方法替换默认的长日期格式对象:
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解析传递给格式化的字符串以查找令牌.如果要添加“ LTY”之类的自定义标记,则还需要将其添加到本地格式标记列表中:
var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
将更改为(添加了LTY):
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,并且使用标准moment.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>
到此为止.
请注意,此处使用的“语言环境”是用词不当.格式设置首选项与用户所处的位置(即他们的语言环境)无关,“ en”是一种在众多语言环境中使用的语言,这些语言在如何格式化日期方面有不同的偏好.
标签:javascript,date,momentjs,format 来源: https://codeday.me/bug/20191012/1900078.html