En JavaScript, les dates peuvent être transformées en millisecondes depuis l'époc en appelant la getTime()
méthode ou en utilisant simplement la date dans une expression numérique.
Donc, pour obtenir la différence, soustrayez simplement les deux dates.
Pour créer une nouvelle date en fonction de la différence, passez simplement le nombre de millisecondes dans le constructeur.
var oldBegin = ...
var oldEnd = ...
var newBegin = ...
var newEnd = new Date(newBegin + oldEnd - oldBegin);
Cela devrait juste fonctionner
EDIT : Correction d'un bug signalé par @bdukes
MODIFIER :
Pour une explication du comportement, oldBegin
, oldEnd
et newBegin
sont des Date
cas. L' appel des opérateurs +
et -
déclenchera la coulée automatique Javascript et appellera automatiquement la valueOf()
méthode prototype de ces objets. Il arrive que la valueOf()
méthode soit implémentée dans l' Date
objet en tant qu'appel à getTime()
.
Donc en gros: date.getTime() === date.valueOf() === (0 + date) === (+date)
Date
objets? Il est difficile de dire quel type d'objet ils sont censés être, car la déclaration de variable est omise ici.JavaScript prend parfaitement en charge la différence de date hors de la boîte
Maintenant quelques pièges. Essaye ça:
Donc, si vous risquez d'ajouter un nombre et une date, convertissez
number
directement la date en .Mon premier exemple démontre la puissance de l'objet Date, mais il semble en fait être une bombe à retardement
la source
-
contraint les arguments en nombre, de sorte que la date renvoie sa valeur d'heure. L'+
opérateur est surchargé, il peut donc faire de l'addition, de la coercition sur le nombre ou de la concaténation. Puisque Dates contraint à String dans ce cas,+
fait la concaténation. La confusion n'est pas la faute de l'objet Date, mais de la surcharge des opérateurs.Voir JsFiddle DEMO
pour votre code HTML:
la source
Si vous ne vous souciez pas de la composante heure, vous pouvez utiliser
.getDate()
et.setDate()
pour définir simplement la partie date.Donc, pour définir votre date de fin à 2 semaines après votre date de début, faites quelque chose comme ceci:
Pour renvoyer la différence (en jours) entre deux dates, procédez comme suit:
Enfin, modifions la première fonction pour qu'elle puisse prendre la valeur renvoyée par 2nd comme paramètre:
la source
GetDateDiff()
franchira les barrières mensuelles. Par exemple, 2011/04/26 et 2011/05/01 renverront -25, mais le décalage doit être de 5 jours.Merci @ Vincent Robert , j'ai fini par utiliser votre exemple de base, même si c'est en fait
newBegin + oldEnd - oldBegin
. Voici la solution finale simplifiée:la source
getTime
parfois et parfois pasEn fonction de vos besoins, cette fonction calculera la différence entre les 2 jours, et retournera un résultat en jours décimal.
la source
Math.abs()
appel et vous obtiendrez toujours une décimale positive.date.getTime()
pour obtenir le temps dans le futur / passé. `var nextMinute = nouvelle date (someDate.getTime () + 60 * 1000);Si vous utilisez moment.js, il existe une solution plus simple, qui vous donnera la différence en jours sur une seule ligne de code.
Des détails supplémentaires peuvent être trouvés dans la page moment.js
Bravo, Miguel
la source
la source
code étendu de modification alternative.
http://jsfiddle.net/vvGPQ/48/
la source
la source
la source
ce code remplit la durée des années d'études lorsque vous saisissez la date de début et la date de fin (qualifier la date acquise) de l'étude et vérifiez si la durée est inférieure à un an si oui l'alerte un message prend en compte il y a trois éléments d'entrée le premier
txtFromQualifDate
et deuxièmetxtQualifDate
et troisièmetxtStudyYears
il montrera le résultat du nombre d'années avec fraction
la source
getFullYear
qui a été conçu pour cela. ------- Voir la bibliothèque datejs sur googlecode qui prend en charge la plupart des cas d'angleSi vous utilisez des objets Date, puis utilisez la
getTime()
fonction pour les deux dates, il vous donnera leurs heures respectives depuis le 1er janvier 1970 dans une valeur numérique. Vous pouvez alors faire la différence entre ces chiffres.Si cela ne vous aide pas, consultez la documentation complète: http://www.w3schools.com/jsref/jsref_obj_date.asp
la source
Le code ci-dessous renverra les jours restants entre aujourd'hui et la date future.
Dépendances: jQuery et MomentJs.
la source
la source
C'EST CE QUE J'AI FAIT SUR MON SYSTÈME.
la source