【发布时间】:2015-09-02 14:14:16
【问题描述】:
如果我将 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/
我还在不同的浏览器上看到了不同的结果。根据docs:
...我们首先检查字符串是否与已知的 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
【问题讨论】:
-
我尝试回答这个问题,但当我发现 Moment 将
moment('foo-bar-17')视为无效但moment('foo-bar-1')到moment('foo-bar-12')视为 2001 年 1 月至 12 月 1 日时,我不得不放弃。我不确定你看到了什么不同的结果,但它可能与this question I answered a few weeks back有关。 -
谢谢詹姆斯。发现解析有一个“严格”选项。在下面发布我的答案。
标签: javascript date momentjs