Добавить длительностью в минуту (момент.js)
момент версия: 2.0.0
после прочтения документов, Я думал, что это будет прямо вперед (Chrome console):
var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = startdate.add(moment.duration(2, 'hours'));
returned_endate == expected_enddate // false
returned_endate // Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
это тривиальный пример, но я даже не могу заставить его работать. Я чувствую, что упускаю что-то важное здесь, но я действительно не понимаю этого. Даже это, кажется, не работает:
startdate.add(2, 'hours')
// Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
любая помощь была бы очень признательна.
Edit: Моя конечная цель-сделать бинарную диаграмму состояния как я работаю здесь: http://bl.ocks.org/phobson/5872894
Как вы можете видеть, в настоящее время я использую фиктивные x-значения, пока я работаю над этой проблемой.
3 ответа:
Я думаю, вы пропустили ключевой момент в документации
.add()
изменяет исходный момент, добавляя время.
вы, кажется, рассматриваете его как функцию, которая возвращает неизменяемый результат. Легко ошибиться. :)
если вы используете возвращаемое значение, это тот же самый фактический объект, с которого вы начали. Он просто возвращается как удобство для цепочки методов.
вы можете обойти эту проблему путем клонирование момента,как описано здесь.
кроме того, вы не можете просто использовать
==
чтобы проверить. Вы можете отформатировать каждый момент для одного и того же вывода и сравнить их, или вы можете просто использовать.isSame()
метод.ваш код выглядит так:
var timestring1 = "2013-05-09T00:00:00Z"; var timestring2 = "2013-05-09T02:00:00Z"; var startdate = moment(timestring1); var expected_enddate = moment(timestring2); var returned_endate = moment(startdate).add(2, 'hours'); // see the cloning? returned_endate.isSame(expected_enddate) // true
Я работаю над приложением, в котором мы отслеживаем живой маршрут. Пассажир хочет показать текущее положение водителя и ожидаемое время прибытия, чтобы добраться до его/ее местоположения. Поэтому мне нужно добавить некоторую продолжительность в текущее время.
поэтому я нашел ниже упомянутый способ сделать то же самое. Мы можем добавить любую продолжительность (час,минуты и секунды) в наше текущее время по моментам:
var travelTime = moment().add(642, 'seconds').format('hh:mm A');// it will add 642 seconds in the current time and will give time in 03:35 PM format var travelTime = moment().add(11, 'minutes').format('hh:mm A');// it will add 11 mins in the current time and will give time in 03:35 PM format; can use m or minutes var travelTime = moment().add(2, 'hours').format('hh:mm A');// it will add 2 hours in the current time and will give time in 03:35 PM format
он выполняет мое требование. Может быть, это может помочь вам.
для людей, имеющих
startTime
(например, 12h: 30: 30) и Aduration
(значение в минутах, как 120), Вы можете догадатьсяendTime
вот так:const startTime = '12:30:00'; const durationInMinutes = '120'; const endTime = moment(startTime, 'HH:mm:ss').add(durationInMinutes, 'minutes').format('HH:mm'); // endTime is equal to "14:30"