Я посмотрел на вас код и сначала я не получил те же результаты. Однако, когда я изменил часовой пояс в Бразилии (GMT-03: 00) - Сан-Паулу, я получил тот же результат. Это явно ошибка, и теперь она была отнесена к V8 и сообщается.
Plunker
var m = moment(new Date(2014, 9, 18, 0, 0, 0));
console.log(m.toString());
console.log(m.add("days",1).toString());
Сб 18 октября 2014 00:00:00 GMT-0300 script.js: 4
Сб окт 18 2014 00:00:00 GMT-0300 script.js : 5
Я отправил сообщение об ошибке: https://github.com/moment/moment/issues/1440
Обновление
Moment.js не несет ответственности за эту ошибку. Отслеживается ошибка в V8 (механизм JavaScript, используемый как Chrome, так и Node). Я подал ошибку с V8, чтобы вы могли здесь: 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 странно устанавливает время до конца 18 октября, хотя мы специально попросили его установить его до 19 октября, ответ выходит неправильно.Это особенно странно, потому что переход на летнее время - это прыжок вперёд, то есть, если что-то должно закончиться 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)
Можете ли вы предоставить более подробную информацию? Я не вижу такого поведения. Вот пример скрипта: http://jsfiddle.net/a7KPv/1/ –
Я добавил версию Chrome, где у меня проблема – earnaz
Я обновил свой ответ, чтобы включить работу, проделанную Isaac Cambron, и отчет об ошибке для V8 для вы должны отслеживать. Хороший улов. –