J'essaie de faire la différence entre deux dates en quelques secondes. La logique serait la suivante:
La raison pour laquelle je le fais avec des dates, c'est parce que la date/heure finale dépend de certaines autres variables et que ce n'est jamais la même chose (cela dépend de la rapidité avec laquelle un utilisateur fait quelque chose) et que je stocke également la date initiale pour d'autres choses.
J'ai essayé quelque chose comme ça:
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 fait est que je n’obtiens jamais la bonne différence. J'ai essayé de diviser par 24 * 60
, ce qui me laisserait les secondes, mais je ne réussis jamais. Alors, qu'est-ce qui ne va pas dans ma logique? Je fais peut-être une erreur stupide car il est assez tard, mais ça me dérange de ne pas pouvoir le faire fonctionner :)
var startDate = new Date();
// Do your operations
var endDate = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
Ou encore plus simple (endDate - startDate) / 1000
comme indiqué dans les commentaires, sauf si vous utilisez TypeScript.
Vous devez appeler la méthode getTime()
pour les objets Date
, puis les soustraire et les diviser par 1 000 (étant donné qu’elles sont initialement exprimées en millisecondes). De plus, lorsque vous appelez la méthode getDate()
, vous obtenez en fait le jour du mois sous la forme d'un entier compris entre 1 et 31 (pas sur la base de zéro), contrairement au temps que vous obtiendrez. d'appeler la méthode getTime()
, représentant le nombre de millisecondes depuis le 1er janvier 1970 à 00:00
En fonction de vos opérations liées à la date, vous pouvez investir dans l’intégration d’une bibliothèque telle que date.js ou moment.js qui fabrique des objets tellement plus facile pour le développeur, mais ce n'est qu'une question de préférence personnelle.
Par exemple dans moment.js nous ferions moment1.diff(moment2, "seconds")
qui est belle.
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();
var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>
Vous pouvez utiliser new Date().getTime()
pour obtenir les horodatages. Vous pouvez ensuite calculer la différence entre end et start et enfin transformer l’horodatage ms
en s
.
const start = new Date().getTime();
const end = new Date().getTime();
const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);
essayez d'utiliser des fonctions dédiées à partir de langages de programmation de haut niveau. JavaScript .getSeconds();
convient ici:
var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds();
var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds();
alert(specifiedTimeSeconds-currentTimeSeconds);
Le code ci-dessous donnera la différence de temps en seconde.
var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second
alert(timeDiffInSecond );
décalage horaire entre maintenant et 10 minutes plus tard en utilisant momentjs
let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');
let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;