Déterminer le décalage horaire entre deux instances est une tâche fondamentale dans divers scénarios de programmation. Cet article explique comment calculer efficacement cette différence à l'aide d'exemples spécifiques.
Considérez l'exigence suivante :
var now = "04/09/2013 15:00:00"; var then = "04/09/2013 14:20:30"; //expected result: "00:39:30"
Au départ, vous pouvez essayer l'approche suivante :
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, dans cet exemple, la valeur inattendue « 10 » apparaît dans le résultat. En effet, moment.duration convertit la différence entre maintenant et ensuite en un objet contenant des valeurs internes telles que des millisecondes. Pour convertir cette durée en intervalle de temps, vous pouvez utiliser :
duration.get("hours") + ":" + duration.get("minutes") + ":" + duration.get("seconds")
Cela produirait le résultat souhaité : "00:39:30."
Remarque : Cette approche ne convient que pour des durées inférieures à 24 heures. Pour des durées plus longues, vous avez besoin d'une approche différente.
var now = "04/09/2013 15:00:00"; var then = "02/09/2013 14:20:30"; 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"); // outputs: "48:39:30"
Dans ce cas, nous calculons la différence de temps en millisecondes, la convertissons en un objet de durée d, puis la formatons en utilisant l'heure UTC. Cela nous donne le résultat correct, "48:39:30."
Vous pouvez également utiliser le plugin moment-duration-format pour simplifier le processus de formatage.
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!