根据区域设置使用moment.js格式化日期

时间:2014-08-12 12:51:26

标签: javascript momentjs date-parsing

我使用 moment-with-locales.min.js 进行日期操作,我需要在用户离开文本框时进行格式化。由于区域设置是一个问题,我尝试使用时刻进行格式化。但是,我遇到了一个问题,我不确定我做错了什么。

如果用户输入类似于' 2/2/12'我尝试用时刻(' 2/2/12',' l'),使用' l'对于基于区域设置的短日期,它将其格式化为' 2/2 / 0012'。这本身似乎已经破裂了。

如果我尝试使用时刻(' 2/2/12',' M / d / yyyy')进行格式化,如JSFiddle中所示在下面,它将其更改为' 2/1/2014'。它总是把它降到本月的第一天,并使它成为当年。

这是我正在使用的JSFiddle

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);
}

我很感激和帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用"D""d" 星期几)。

至于这一年,根据docs,«默认情况下,两位数的年份解析器假定68岁以上的年份在1900年以及2000年以下的年份。»所以我'猜测(和实验似乎证实了)如果你使用4位数字格式("YYYY"),它会假设你在12年而不是2012年过世。如果你使用"YY"它' ll打印2012年正确。

总而言之,格式"M/D/YY"应该做你想要的。