Comment puis-je ajouter 10 secondes à un objet de date JavaScript?
Quelque chose comme ça:
var timeObject = new Date()
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
Comment puis-je ajouter 10 secondes à un objet de date JavaScript?
Quelque chose comme ça:
var timeObject = new Date()
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
Réponses:
Il y a aussi une setSecondsméthode:
var t = new Date();
t.setSeconds(t.getSeconds() + 10);
Pour une liste des autres Date fonctions, vous devriez consulter MDN
setSeconds gérera correctement les cas enveloppants:
var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05
typeof new Date().getSeconds()retourne 'number'dans le nœud, donc je pense que vous pouvez avoir d'autres problèmes (sauf si vous êtes sur une version obsolète du nœud ou quelque chose).
d.setSeconds(d.getSeconds() - 92);et vous vous retrouverez avec 2'32 "de différence au lieu de 1'32". La solution avec new Date(d.getTime() - 92*1000);fonctionne cependant!
// let timeObject = new Date();
// let seconds = 10 * 1000; // 10000 milliseconds
timeObject = new Date(timeObject.getTime() + seconds);
Juste pour les maniaques de la performance parmi nous.
var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);
5,196,949 Ops / sec, le plus rapide
var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);
2936604 Ops / sec, 43% plus lent
var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');
22549 Ops / sec, 100% plus lent
Alors peut-être que c'est le moins lisible par l'homme (pas si mal) mais le moyen le plus rapide d'aller :)
const timeObject = new Date();
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);
Veuillez également vous référer: Comment ajouter 30 minutes à un objet Date JavaScript?
var timestamp = Date.parse("2011-03-26T20:59:59.999Z"); var d = new Date(timestamp); d.setSeconds(d.getSeconds() + 10); console.log(d.getTime() - timestamp);
timeObject.setSeconds(timeObject.getSeconds() + 10)
L' Date()objet en javascript n'est pas vraiment intelligent.
Si vous vous concentrez uniquement sur l'ajout de secondes, cela semble gérer les choses en douceur, mais si vous essayez d'ajouter X nombre de secondes, puis ajoutez X nombre de minutes et d'heures, etc., au même Dateobjet que vous vous retrouvez en difficulté. Je suis donc simplement revenu à utiliser uniquement la setSeconds()méthode et à convertir mes données en secondes (ce qui a bien fonctionné).
Si quelqu'un peut démontrer l'ajout de temps à un Date()objet global à l' aide de toutes les méthodes définies et que l'heure finale s'affiche correctement, je voudrais le voir, mais j'ai l'impression qu'une seule méthode définie doit être utilisée à la fois sur un Date()objet donné et les mélanger mène à un gâchis.
var vTime = new Date();
var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );
vTime.setSeconds(iSecondsToAdd);
Voici une documentation supplémentaire qui peut vous aider :
vous pouvez utiliser la setSecondsméthode en obtenant des secondes à partir d'aujourd'hui et en ajoutant simplement 10 secondes
var today = new Date();
today.setSeconds(today.getSeconds() + 10);Vous pouvez ajouter 10 * 1000 millisecondes à la nouvelle date:
var today = new Date();
today = new Date(today.getTime() + 1000*10);Vous pouvez utiliser setTime:
today.setTime(now.getTime() + 10000)Essayez de cette façon.
Date.prototype.addSeconds = function(seconds) {
var copiedDate = new Date(this.getTime());
return new Date(copiedDate.getTime() + seconds * 1000);
}
Il suffit d'appeler et d'attribuer new Date().addSeconds(10)