时刻(“05/1/11”)。toString()按预期返回“2011年5月1日星期一”而非2011年。
在Moment.js documentation我看到“2位数年份(如果大于68年将返回1900年,否则2000年)”多次(年,周和ISO年)。
我希望在解析没有格式的日期时默认遵循这一点,但事实并非如此。这是一个功能吗?多年来有没有办法迫使它以这种方式行事(2000年,如果低于68)?
我需要解析自由格式的用户输入。它可能是2011年7月5日或2011年7月6日的5/1/11。所以我希望传递到的唯一格式是年度字段,然后只有在找不到四位数的年份时用户输入。
答案 0 :(得分:5)
如果您没有指定格式字符串,则解析由浏览器处理(即new Date(string)
),而不是由Moment处理;请参阅文档中的moment(string)
文档。如果您希望Moment进行解析(并应用类似> 68的规则),则需要提供格式字符串。
var test = moment("05/1/11", "MM/D/YY").toString();
$('#date').append(test);
输出:
Sun May 01 2011 00:00:00 GMT-0400
答案 1 :(得分:1)
解析两位数年份 默认情况下,假定68之前的两位数字年份是1900年代,而68或以下的年份则假定是2000年代。可以通过替换moment.parseTwoDigitYear方法来更改。此方法的唯一参数是一个字符串,其中包含用户输入的两年,并且应以整数形式返回年份。
您可以使用此代码来配置一下moment如何解析两年字符串
moment.parseTwoDigitYear = function (yearString) {
return parseInt(yearString) + (parseInt(yearString) > 19 ? 1900 : 2000);
}