[javascript] 순간에 기간 추가 (moment.js)

순간 버전 : 2.0.0

docs를 읽은 후 이것이 간단하다고 생각했습니다 (Chrome 콘솔).

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]…}

도움을 주시면 감사하겠습니다.

편집 :
내 최종 목표는 내가 작업중 인 것과 같은 이진 상태 차트를 만드는 것입니다 :
http://bl.ocks.org/phobson/5872894

보시다시피, 현재이 문제를 해결하는 동안 더미 x 값을 사용하고 있습니다.



답변

나는 당신이 문서의 요점을 놓쳤다 고 생각합니다. .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과 같은) 및 duration(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"


답변