[javascript] Moment J에서 두 날짜의 시간 차이를 가져옵니다

MomentJ를 사용하여 두 날짜의 차이를 다음과 같이 얻을 수 있습니다.

moment(end.diff(startTime)).format("m[m] s[s]")

그러나 해당되는 경우 시간을 표시하고 싶습니다 (> = 60 분이 지난 경우에만).

그러나 다음을 사용하여 지속 시간을 검색하려고하면

var duration = moment.duration(end.diff(startTime));
var hours = duration.hours();

두 날짜 사이의 시간 수가 아닌 현재 시간을 반환합니다.

두 순간의 시간 차이를 어떻게 알 수 있습니까?



답변

당신은 가까이있었습니다. duration.asHours()메소드 를 사용하기 만하면됩니다 ( docs 참조 ).

var duration = moment.duration(end.diff(startTime));
var hours = duration.asHours();


답변

다음 코드 블록은 MomentJS를 사용하여 두 날짜 사이의 일 수 차이를 계산하는 방법을 보여줍니다.

var now = moment(new Date()); //todays date
var end = moment("2015-12-1"); // another date
var duration = moment.duration(now.diff(end));
var days = duration.asDays();
console.log(days)


답변

아니면 간단하게 할 수 있습니다 :

var a = moment('2016-06-06T21:03:55');//now
var b = moment('2016-05-06T20:03:55');

console.log(a.diff(b, 'minutes')) // 44700
console.log(a.diff(b, 'hours')) // 745
console.log(a.diff(b, 'days')) // 31
console.log(a.diff(b, 'weeks')) // 4

문서 : 여기


답변

hours모멘트 diff 기능에 대한 두 번째 매개 변수로 전달 하기 만하면됩니다.

var a = moment([21,30,00], "HH:mm:ss")
var b = moment([09,30,00], "HH:mm:ss")
a.diff(b, 'hours') // 12

문서 : https://momentjs.com/docs/#/displaying/difference/

예:

const dateFormat = "YYYY-MM-DD HH:mm:ss";
// Get your start and end date/times
const rightNow = moment().format(dateFormat);
const thisTimeYesterday = moment().subtract(1, 'days').format(dateFormat);
// pass in hours as the second parameter to the diff function
const differenceInHours = moment(rightNow).diff(thisTimeYesterday, 'hours');

console.log(`${differenceInHours} hours have passed since this time yesterday`);
<script
  src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js">
</script>


답변

다음 과 같이 사람이 읽을 수있는 좋은 형식으로 특정 시간에서 시간을 반환 하는 훌륭한 moment메소드 가 있습니다 fromNow().

moment('2019-04-30T07:30:53.000Z').fromNow() // an hour ago || a day ago || 10 days ago

또는 두 특정 날짜 사이에 원하는 경우 다음을 사용할 수 있습니다.

var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b); // "a day ago"

문서에서 가져온 것 :


답변

나는 이것이 오래된 것을 알고 있지만 여기에 하나의 라이너 솔루션이 있습니다.

const hourDiff = start.diff(end, "hours");

어디에서 시작끝은 순간 개체입니다.

즐겨!


답변

 var start=moment(1541243900000);
 var end=moment(1541243942882);
 var duration = moment.duration(end.diff(startTime));
 var hours = duration.asHours();

보시다시피, 시작 및 종료 날짜는이 방법이 작동하기위한 모멘트 객체 여야했습니다.