【发布时间】:2015-09-14 21:06:08
【问题描述】:
我目前正在使用 moment.js 库向我的用户实时呈现日期,但今天经过一些测试后,我注意到一些非常奇怪的事情,当在 Firefox 中向用户列出所有可能的日期时,moment.js 无法在日期“2015-09-14”中添加天数。 在搜索开发人员文档和互联网后,我发现您必须传递 ISO8601 有效日期或通过传递日期的显式信息来构造,但结果仍然让我感到困惑。
这里有一些代码供大家理解:
工作案例(从当前时间创建一个 moment() 实例):
var printVar = moment();
var divInfo = document.getElementById('calendars');
divInfo.innerHTML += "<ul>";
for(var i=0; i<40; i++){
divInfo.innerHTML += "<li> " + printVar.format('DD/MM/YYYY') + " </li>";
printVar = moment(printVar).add(1, 'days');
}
divInfo.innerHTML += "</ul>";
我的结果:
- 15/10/2015
- 16/10/2015
- 17/10/2015
- 18/10/2015
- 19/10/2015
- 20/10/2015
奇怪的案例 #1(使用编码“YYYY-MM-DD”的时间创建一个时刻()):
var printVar = moment('2015-09-14');
var divInfo = document.getElementById('calendars');
divInfo.innerHTML += "<ul>";
for(var i=0; i<40; i++){
divInfo.innerHTML += "<li> " + printVar.format('DD/MM/YYYY') + " </li>";
printVar = moment(printVar).add(1, 'days');
}
divInfo.innerHTML += "</ul>";
我的结果:
- 15/10/2015
- 16/10/2015
- 17/10/2015
- 17/10/2015
- 18/10/2015
- 19/10/2015
奇怪的情况 #2(使用像 moment([2015, 8, 14]) 这样的显式构造函数创建一个 moment())返回相同的结果:
- 15/10/2015
- 16/10/2015
- 17/10/2015
- 17/10/2015
- 18/10/2015
- 19/10/2015
火狐版本:40.0.3
感谢大家的帮助!
【问题讨论】:
-
有趣的bug,但你绝对应该在github上创建一个Issue..看起来真的很奇怪
标签: javascript momentjs