在Moment.js中,我有下一个问题:
1.我创建一个瞬间日期:
var m = moment(new Date(2014, 9, 18, 0, 0, 0));2.如果我调用toString函数:
m.toString() //"Sat Oct 18 2014 00:00:00 GMT-0300"3.现在,我再加上一天,我有了下一个产出:
m.add("days",1).toString() //"Sat Oct 18 2014 00:00:00 GMT-0300"我又得到了什么18?妈妈应该改变日期。
编辑:发布于Chrome 32.0.1700.76m
EDIT2: MomentJs版本2.5.1
EDIT3: UTC-3时区
发布于 2014-01-24 04:37:50
我看过你的代码,一开始我没有得到相同的结果。然而,当我把时区改为巴西(格林威治时间-03:00)-圣保罗时,我得到了同样的结果。这显然是一个bug,现在已经被追踪到V8并被报告。
柱塞
var m = moment(new Date(2014, 9, 18, 0, 0, 0));
console.log(m.toString());
console.log(m.add("days",1).toString());2014年10月18日(星期六)格林尼治时间-0300 script.js:4 2014年10月18日(星期六)格林尼治时间-0300 script.js:5
我提交了一个bug:https://github.com/moment/moment/issues/1440
更新
Moment.js不对此bug负责。它被追踪到V8 ( Chrome和Node都使用的javascript引擎)中的一个bug。我向V8提交了一个bug,您可以在这里跟踪它:https://code.google.com/p/v8/issues/detail?id=3116
这是艾萨克·坎布伦为追踪它所做的工作。
好的,现在在Ubuntu和OSX中复制(我之前在我的测试中使用了一个不同的巴西城市)。我使用的是Node,不是Chrome,但就我们的目的而言,V8是V8。
moment([2014, 9, 18]).add(1, 'd').format(); //=> '2014-10-18T00:00:00-03:00'问题是,这一时刻实际上是这样的:
var d = new Date(2014, 9, 18);
d.setDate(19);
d.toString(); // => Sat Oct 18 2014 23:00:00 GMT-0300 (BRT)
//wtf?然后它将时间设置为零。由于V8奇怪地把时间定在10月18日晚些时候,尽管我们特别要求它把时间定在10月19日,所以答案是错误的。这一切都特别奇怪,因为这里的DST转换是一个跳转,意味着它应该以1:00结束,而不是前一天的23:00。
事实上,它甚至这样做:
new Date("October 18, 2014"); //=> Sat Oct 18 2014 00:00:00 GMT-0300 (BRT)
new Date("October 19, 2014"); //=> Sat Oct 18 2014 23:00:00 GMT-0300 (BRT)发布于 2014-01-23 20:22:19
根据这个jsFiddle,您正在做/应该/正在工作的东西。你在测试哪个浏览器?
http://jsfiddle.net/mori57/Nq3KD/
var m = moment(new Date(2014, 9, 18, 0, 0, 0));
console.log(m.toString()); // Firebug output: Sat Oct 18 2014 00:00:00 GMT-0400
console.log(m.add("days",1).toString()); // output: Sun Oct 19 2014 00:00:00 GMT-0400发布于 2014-05-13 09:21:59
只需使用下面的代码在moment.js中获取下一次约会
var date='2014/09/18';
var nextDate = moment(date, 'YYYY/MM/DD').add('days', 1).format('YYYY/MM/DD');
console.log(nextDate); // 2014/09/19有关详细信息,请参阅下面的链接
动量文档
https://stackoverflow.com/questions/21318357
复制相似问题