我目前正在使用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>";
我的结果:
奇怪的情况#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>";
我的结果:
奇怪的情况#2(使用显式构造函数创建一个时刻(),如时刻([2015,8,14]))返回相同的结果:
Firefox版本:40.0.3
感谢所有帮助!
答案 0 :(得分:0)
而不是
printVar = moment(printVar.format()).add(1, 'days');
只是做
printVar.add(1, 'days');
示例代码:
var printVar, divInfo, i;
printVar = moment();
divInfo = document.getElementById('example-1');
divInfo.innerHTML += "<ul>";
for(i=0; i<10; i++){
divInfo.innerHTML += "<li> " + printVar.format('DD/MM/YYYY') + " </li>";
printVar.add(1, 'days');
}
divInfo.innerHTML += "</ul>";
printVar = moment('2015-9-10');
divInfo = document.getElementById('example-2');
divInfo.innerHTML += "<ul>";
for(i=0; i<10; i++){
divInfo.innerHTML += "<li> " + printVar.format('DD/MM/YYYY') + " </li>";
printVar.add(1, 'days');
}
divInfo.innerHTML += "</ul>";
printVar = moment([2015, 8, 14]);
divInfo = document.getElementById('example-3');
divInfo.innerHTML += "<ul>";
for(i=0; i<10; i++){
divInfo.innerHTML += "<li> " + printVar.format('DD/MM/YYYY') + " </li>";
printVar.add(1, 'days');
}
divInfo.innerHTML += "</ul>";
div {
margin-top: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/locale/af.js"></script>
<div id="example-1"></div>
<div id="example-2"></div>
<div id="example-3"></div>