246 votes

Obtenir le décalage horaire entre deux dates en secondes

J'essaie de faire la différence entre deux dates en quelques secondes. La logique serait comme ceci :

  • une date qui serait maintenant;
  • définir une date limite qui serait la date initiale de plus d'une certaine quantité de secondes dans le futur ( disons 15 par exemple )
  • obtenir la différence entre les deux ( le nombre de secondes )

La raison pour laquelle je suis en train de faire avec les dates c'est parce que la dernière date / heure dépend d'autres variables et il n'est jamais le même ( cela dépend de combien de temps un utilisateur fait quelque chose ) et j'ai également stocker la date initiale pour d'autres choses.

J'ai essayé quelque chose comme ceci :

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

Le truc c'est que je n'ai jamais eu le droit à la différence. J'ai essayé de diviser par 24 * 60 qui voulait me quitter avec les secondes, mais je n'arrive jamais à droite. Alors, quel est-il de mal avec ma logique ? Je suis peut-être faire une erreur stupide comme il est assez tard, mais ça me dérange que je ne peux pas le faire fonctionner :)

491voto

Juan - devtopia.coop Points 7302

Le Code

var seconds = (_final.getTime() - _initial.getTime())/1000;


L'explication

Vous devez appeler l' getTime() méthode de la Date d'objets, puis il suffit de soustraire et diviser par 1000 (car il est à l'origine en millisecondes). Comme un supplément de fait, lorsque vous êtes à l'appel de la getDate() méthode, vous êtes en fait le jour du mois sous forme de nombre entier entre 1 et 31 (pas de base zéro), par opposition à l'époque, vous obtiendrez à partir de l'appel de la getTime() méthode, représentant le nombre de millisecondes depuis le 1er janvier 1970, 00:00


Utile docs pour cette réponse:

-3voto

Rahul Tripathi Points 1

Essaye ça:-

 var t1 = new Date(YYYY, MM, DD, 0, 0, 0, 0)
var t2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0)
var dif = t1.getTime() - t2.getTime()

var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X