Comment ajouter des jours au courant en Date
utilisant JavaScript. JavaScript a-t-il une fonction intégrée comme .Net AddDay
?
javascript
date
datetime
time
Ashesh
la source
la source
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
pour une raison quelconque, je préfère écrire24*60*60
dans mon code :)Bonne réponse :
Réponse incorrecte :
Cette réponse fournit parfois le résultat correct mais renvoie très souvent la mauvaise année et le mauvais mois. La seule fois où cette réponse fonctionne, c'est lorsque la date à laquelle vous ajoutez des jours se trouve avoir l'année et le mois en cours.
Preuve / exemple
Vérifiez ce JsFiddle
Afficher l'extrait de code
la source
Soyez prudent, car cela peut être délicat. Lorsque vous définissez "demain", cela ne fonctionne que parce que sa valeur actuelle correspond à l'année et au mois pour "aujourd'hui". Cependant, la définition d'un numéro de date tel que "32" fonctionnera normalement très bien pour le déplacer vers le mois suivant.
la source
var d = new Date(); d.setDate( d.getDate() + 1 );
?getDate()
renvoie le jour de cette année . Ensuite, l'appelsetDate
définit le jour de l' année en cours . Ce n'est donc PAS une bonne solution générale. La réponse de @ AnthonyWJones fonctionne réellement correctement.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
3 janvier 2017 qui s'étale sur 2 ans.Ma solution simple est:
cette solution n'a pas de problème avec l'heure d'été. En outre, on peut ajouter / sous-compenser n'importe quel décalage pendant des années, des mois, des jours, etc.
est le bon code.
la source
setDate
.Ces réponses me paraissent déroutantes, je préfère:
getTime () nous donne des millisecondes depuis 1970, et 86400000 est le nombre de millisecondes par jour. Par conséquent, ms contient des millisecondes pour la date souhaitée.
L'utilisation du constructeur en millisecondes donne l'objet de date souhaité.
la source
new Date(new Date('11/4/2012').getTime() + 86400000)
Essayer
L'utilisation de setDate () pour ajouter une date ne résoudra pas votre problème, essayez d'ajouter quelques jours à un mois de février, si vous essayez d'ajouter de nouveaux jours, cela n'entraînera pas ce que vous attendiez.
la source
setDate()
? Est-ce ceci: stackoverflow.com/questions/5497637/…Je viens de passer des heures à essayer de comprendre ce que l'accord avec l'année n'a pas ajouté en suivant les exemples principaux ci-dessous.
Si vous voulez simplement ajouter n jours à la date que vous avez, il vaut mieux y aller:
ou la version longue
Ce truc aujourd'hui / demain est déroutant. En définissant la date actuelle dans votre nouvelle variable de date, vous gâcherez la valeur de l'année. si vous travaillez à partir de la date d'origine, vous ne le ferez pas.
la source
Si vous le pouvez, utilisez moment.js . JavaScript n'a pas de très bonnes méthodes de date / heure natives. Voici un exemple de syntaxe de Moment:
Référence: http://momentjs.com/docs/#/manipulating/add/
la source
CodePen
la source
J'ai créé ces extensions hier soir:
vous pouvez passer des valeurs positives ou négatives;
exemple:
la source
Sans utiliser la deuxième variable, vous pouvez remplacer 7 par vos x prochains jours:
la source
soustraire 30 jours d'utilisation (24h = 86400000ms)
Afficher l'extrait de code
la source
La solution la plus simple.
la source
Merci Jason pour votre réponse qui fonctionne comme prévu, voici un mélange de votre code et du format pratique d'AnthonyWJones:
la source
Tard dans la soirée,
mais si vous l'utilisez,existe un excellent plugin appelé Moment:jQuery
ilhttp://momentjs.com/
http://momentjs.com/docs/#/manipulating/
Et plein d'autres bonnes choses là-dedans!
Edit: référence jQuery supprimée grâce au commentaire d'Aikeru
la source
Une solution conçue pour l' exploitant du pipeline :
Usage:
Si vous avez besoin de plus de fonctionnalités, je vous suggère de regarder dans les date-fns bibliothèque .
la source
Vieux je sais, mais parfois j'aime ça:
la source
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
J'ai eu des problèmes avec l'heure d'été avec la solution proposée.
En utilisant
getUTCDate
/ à lasetUTCDate
place, j'ai résolu mon problème.la source
Vous pouvez utiliser JavaScript, aucune jQuery requise:
la source
Prototype générique sans variable, il s'applique sur une valeur Date existante:
la source
Les documents mozilla pour setDate () n'indiquent pas qu'il gérera les scénarios de fin de mois. Voir https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
régler la date()
C'est pourquoi j'utilise setTime () lorsque j'ai besoin d'ajouter des jours.
la source
Aussi simple que cela:
la source
Je suppose que je donnerai également une réponse:
Personnellement, j'aime essayer d'éviter la déclaration de variable gratuite, les appels de méthode et les appels de constructeur, car ils sont tous coûteux en performances. (dans des limites raisonnables, bien sûr)
J'allais laisser cela comme un simple commentaire sous la réponse donnée par @AnthonyWJones, mais j'y pensais mieux.
Ce qui précède respectera l'heure d'été. Cela signifie que si vous ajoutez un nombre de jours qui traversent l'heure d'été, l'heure affichée (heure) changera pour refléter cela.
Exemple:
le 2 novembre 2014, 02:00 était la fin de l'heure d'été.
Si vous cherchez à conserver l'heure sur l'heure d'été (10h30 sera donc toujours 10h30) ...
Alors maintenant, vous avez ...
la source
Non, javascript n'a pas de fonction intégrée, mais vous pouvez utiliser une simple ligne de code
la source
J'utilise quelque chose comme:
Fonctionne avec gain de temps:
Fonctionne avec la nouvelle année:
Il peut être paramétré:
la source
J'utilise la solution suivante.
Date a un constructeur qui accepte un int. Cet argument représente le total des millisecondes avant / après le 1er janvier 1970. Il a également une méthode setTime qui fait de même sans créer un nouvel objet Date.
Ce que nous faisons ici est de convertir les jours en millisecondes et d'ajouter cette valeur à la valeur fournie par getTime. Enfin, nous donnons le résultat au constructeur Date (millisecondes) ou à la méthode setTime (millisecondes).
la source
now.setDate(now.getDate() + days);
gère automatiquement les modifications DST. Et je dois corriger, les secondes intercalaires sont ignorées dans les horodatages JS.Edit: Au lieu de
setTime()
(ousetHours()
) vous pouvez le faire de cette façon:Vieux:
Au lieu d'utiliser,
setTime()
vous pouvez utilisersetHours()
:Voir le JSFiddle ...
la source
d.setDate(d.getDate() + 1);
Code très simple pour ajouter des jours en date dans le script java.
la source
Il existe une méthode setDate et une méthode getDate , qui vous permettent de faire quelque chose comme ceci:
Si vous souhaitez à la fois soustraire un nombre de jours et formater votre date dans un format lisible par l'homme, vous devriez envisager de créer un
DateHelper
objet personnalisé qui ressemble à ceci:(voir aussi ce violon )
la source
L'extension du prototype en javascript peut ne pas être une bonne idée , en particulier dans les bases de code professionnelles.
Ce que vous voulez faire, c'est étendre la
Date
classe native :De cette façon, si un jour Javascript implémente une
addDays
méthode native , vous ne casserez rien.la source