Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于区域设置使用moment.js格式化日期_Javascript_Momentjs_Date Parsing - Fatal编程技术网

Javascript 基于区域设置使用moment.js格式化日期

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

我在locales.min.js中使用矩进行日期处理,并且需要在用户离开文本框时格式化。因为区域设置是一个问题,所以我尝试使用矩来进行格式化。然而,我遇到了一个问题,我不确定我是否做错了什么

如果用户键入类似于“2/2/12”的内容,而我尝试执行矩('2/2/12','l'),使用“l”表示基于区域设置的短日期,它会将其格式化为“2/2/0012”。这一点本身似乎已被打破

如果我尝试使用矩('2/2/12','M/d/yyyy')格式化,如下面的JSFiddle所示,它会将其更改为'2/1/2014'。它总是将它向下推到一个月的第一天,并使之成为当前的一年

这是我用的

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行验证。尽管提出了一些其他问题,但这让我朝着正确的方向前进,谢谢您的回复。