如果我将YYYY-MM-17
指定为moment.js的日期,则表示它是有效日期:
var myMoment = moment('YYYY-MM-17', 'YYYY-MM-DD');
console.log(myMoment.isValid()); // -> true
console.log(myMoment.get('year')); // -> 2017
console.log(myMoment.get('month')); // -> 0
console.log(myMoment.get('day')); // -> 0
https://jsfiddle.net/seu6x3k3/3/
我也在不同的浏览器上看到不同的结果。根据{{3}}:
...我们首先检查字符串是否与已知的ISO 8601格式匹配,如果找不到已知格式,则返回
new Date(string)
。
这不是我所看到的。使用相同格式本机指定日期时:
var date = new Date('YYYY-MM-17'); // -> NaN
console.log(date.getYear()); // -> NaN
console.log(date.getMonth()); // -> NaN
console.log(date.getDay()); // -> NaN
答案 0 :(得分:1)
原来有一个严格的选择。来自docs:
Moment的解析器非常宽容,这可能会导致意外行为。从版本2.3.0开始,您可以为最后一个参数指定一个布尔值,以使Moment使用严格的解析。严格的解析要求格式和输入完全匹配。
Hello t here...