Maison  >  Article  >  interface Web  >  Comment calculer avec précision la différence de temps entre deux dates-heures à l'aide de moment.js ?

Comment calculer avec précision la différence de temps entre deux dates-heures à l'aide de moment.js ?

DDD
DDDoriginal
2024-11-17 11:39:01303parcourir

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

Obtenir la différence de temps entre les dates et heures

Déterminer la différence de temps entre deux dates et heures spécifiques est une exigence courante dans de nombreuses applications. Cet article fournit un guide complet pour obtenir un intervalle de temps précis à l'aide de moment.js, en abordant les problèmes potentiels et en proposant des approches alternatives.

Énoncé du problème

Étant donné deux dates-heures représentées sous forme de chaînes, l'objectif est de calculez le décalage horaire et affichez-le au format HH:MM:SS. Par exemple :

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

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

Tentative initiale et problème

En utilisant la fonction diff de moment.js, vous pouvez essayer ce qui suit :

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

Cependant, cette approche ajoute de manière incorrecte 10 heures, même si les valeurs internes de la durée sont exactes.

Correct Solution

Pour résoudre ce problème, il existe deux options :

Option 1 (pour les durées inférieures à 24 heures) :

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

Cette Cette approche convertit le décalage horaire en UTC, éliminant ainsi toute incohérence de l'heure d'été.

Option 2 (pour les durées de 24 heures ou plus) :

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");

Cette approche calcule la différence de temps en millisecondes, la convertit en un objet de durée et extrait les heures, les minutes et les secondes séparément.

Approche alternative : moment-duration-format

Pour ceux qui recherchent une solution pratique pour formater les objets de durée, un plugin tiers appelé moment-duration-format peut être employé :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn