>웹 프론트엔드 >JS 튜토리얼 >moment.js를 사용하여 두 날짜/시간 간의 시차를 정확하게 계산하는 방법은 무엇입니까?

moment.js를 사용하여 두 날짜/시간 간의 시차를 정확하게 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-17 11:39:01391검색

How to Accurately Calculate the Time Difference Between Two Datetimes using moment.js?

날짜/시간 간의 시차 가져오기

두 특정 날짜/시간 간의 시차를 확인하는 것은 많은 애플리케이션에서 일반적인 요구 사항입니다. 이 문서에서는 moment.js를 사용하여 정확한 시간 간격을 얻고 잠재적인 문제를 해결하며 대체 접근 방식을 제공하는 포괄적인 가이드를 제공합니다.

문제 설명

문자열로 표현된 두 개의 날짜/시간이 주어지면 목표는 다음과 같습니다. 시차를 계산하여 HH:MM:SS 형식으로 표시합니다. 예를 들어:

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"

초기 시도 및 문제

moment.js의 diff 기능을 사용하여 다음을 시도해 볼 수 있습니다.

var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30

그러나 이 접근 방식은 잘못 추가됩니다. 내부 기간 값이 정확함에도 불구하고 10시간입니다.

올바른 해결 방법

이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

옵션 1(용 24시간 미만):

moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")

이 접근 방식은 시차를 UTC로 변환하여 일광 절약 시간 불일치를 제거합니다.

옵션 2(24시간 미만) 24시간 이상):

var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

이 접근 방식은 시간 차이를 밀리초 단위로 계산하여 기간 개체로 변환한 후 시, 분, 초를 별도로 추출합니다.

대체 접근 방식: moment-duration-format

기간 개체 서식 지정을 위한 편리한 솔루션을 원하는 경우 moment-duration-format이라는 타사 플러그인을 사용할 수 있습니다.

var s = d.format("hh:mm:ss");

위 내용은 moment.js를 사용하여 두 날짜/시간 간의 시차를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.