Javascript 基于区域设置使用moment.js格式化日期
我在locales.min.js中使用矩进行日期处理,并且需要在用户离开文本框时格式化。因为区域设置是一个问题,所以我尝试使用矩来进行格式化。然而,我遇到了一个问题,我不确定我是否做错了什么 如果用户键入类似于“2/2/12”的内容,而我尝试执行矩('2/2/12','l'),使用“l”表示基于区域设置的短日期,它会将其格式化为“2/2/0012”。这一点本身似乎已被打破 如果我尝试使用矩('2/2/12','M/d/yyyy')格式化,如下面的JSFiddle所示,它会将其更改为'2/1/2014'。它总是将它向下推到一个月的第一天,并使之成为当前的一年 这是我用的Javascript 基于区域设置使用moment.js格式化日期,javascript,momentjs,date-parsing,Javascript,Momentjs,Date Parsing,我在locales.min.js中使用矩进行日期处理,并且需要在用户离开文本框时格式化。因为区域设置是一个问题,所以我尝试使用矩来进行格式化。然而,我遇到了一个问题,我不确定我是否做错了什么 如果用户键入类似于“2/2/12”的内容,而我尝试执行矩('2/2/12','l'),使用“l”表示基于区域设置的短日期,它会将其格式化为“2/2/0012”。这一点本身似乎已被打破 如果我尝试使用矩('2/2/12','M/d/yyyy')格式化,如下面的JSFiddle所示,它会将其更改为'2/1/20
moment.locale('en-US');
var parsed = moment('2/2/12', 'M/d/yyyy');
if (moment(parsed).isValid()) {
var d = new moment(parsed, 'l');
alert('Pass: ' + d.format('l'));
} else {
alert('Fail: ' + parsed);
}
非常感谢您的帮助。您应该使用“d”
(“d”
是一周中的一天)
至于年份,根据«两位数年份解析器默认假设68岁以上的年份在1900年代,而2000年代则在68岁以下。»因此我猜测(实验似乎证实了这一点),如果您使用4位数格式(“YYYY”
),它将假设您在12岁而不是2012年通过。如果您使用“YY”
它将正确打印2012
总之,格式
“M/D/YY”
应该满足您的需要。您为什么不自己解析它呢?它需要2行代码,可能需要4行验证。尽管提出了一些其他问题,但这让我朝着正确的方向前进,谢谢您的回复。