我正在使用Momentjs在Javascript中验证日期/时间字符串。
var day= "Sunday, February 14th 2010, 3:25:50 pm";
var valid=moment(day,"dddd, MMMM Do YYYY, h:mm:ss a").isValid();
alert(valid);
这总是返回false。我不确定是什么问题。
我正在使用Momentjs库 - http://momentjs.com/docs/#/parsing/is-valid/
我也创建了一个jsfiddle - http://jsfiddle.net/FUDf7/1/
请帮忙。
答案 0 :(得分:2)
改为使用D[th]
:fiddle
ps我不知道为什么Do
无效
答案 1 :(得分:1)
我认为第14个是你的问题
http://jsfiddle.net/blackjim/FUDf7/3/
var day= "Sunday, February 14 2010, 3:25:50 pm";
var valid=moment(day,"dddd MMMM D YYYY h:mm:ss a").isValid();
alert(valid);
答案 2 :(得分:1)
解析时不支持序数 - 请参阅the source code:
/************************************
Parsing
************************************/
// get the regex to find the next token
function getParseRegexForToken(token, config) {
switch (token) {
case 'DDDD':
return parseTokenThreeDigits;
case 'YYYY':
return parseTokenFourDigits;
case 'YYYYY':
return parseTokenSixDigits;
case 'S':
case 'SS':
case 'SSS':
case 'DDD':
return parseTokenOneToThreeDigits;
case 'MMM':
case 'MMMM':
case 'dd':
case 'ddd':
case 'dddd':
return parseTokenWord;
case 'a':
case 'A':
return getLangDefinition(config._l)._meridiemParse;
case 'X':
return parseTokenTimestampMs;
case 'Z':
case 'ZZ':
return parseTokenTimezone;
case 'T':
return parseTokenT;
case 'MM':
case 'DD':
case 'YY':
case 'HH':
case 'hh':
case 'mm':
case 'ss':
case 'M':
case 'D':
case 'd':
case 'H':
case 'h':
case 'm':
case 's':
return parseTokenOneOrTwoDigits;
default :
return new RegExp(token.replace('\\', ''));
}
}
它是been reported as a bug,但它是not going to get fixed“,除非对此有更多需求。”