J'ai besoin d'incrémenter une valeur de date d'un jour en JavaScript.
Par exemple, j'ai une valeur de date 2010-09-11 et j'ai besoin de stocker la date du lendemain dans une variable JavaScript.
Comment incrémenter une date d'un jour?
javascript
date
datetime
Santanu
la source
la source
Réponses:
Trois options pour vous:
1. En utilisant uniquement l'
Date
objet JavaScript (pas de bibliothèques):Ma réponse précédente pour # 1 était fausse (elle a ajouté 24 heures, ne tenant pas compte des transitions vers et depuis l'heure d'été; Clever Human a souligné qu'elle échouerait avec le 7 novembre 2010 dans le fuseau horaire de l'Est). Au lieu de cela, la réponse de Jigar est la bonne façon de le faire sans bibliothèque:
Cela fonctionne même pour le dernier jour d'un mois (ou d'une année), car l'objet de date JavaScript est intelligent pour le survol:
Afficher l'extrait de code
(Cette réponse est actuellement acceptée, je ne peux donc pas la supprimer. Avant qu'elle ne soit acceptée, j'ai suggéré au PO d'accepter les Jigar, mais peut-être ont-ils accepté celle-ci pour les éléments n ° 2 ou n ° 3 de la liste.)
2. Utilisation de MomentJS :
(Méfiez-vous qui
add
modifie l'instance sur laquelle vous l'appelez, plutôt que de renvoyer une nouvelle instance, donc latoday.add(1, 'days')
modifieraittoday
. C'est pourquoi nous commençons par une opération de clonage activéevar tomorrow = ...
.)3. Utilisation de DateJS , mais il n'a pas été mis à jour depuis longtemps:
la source
Date
constructeur (new Date(year, month, date)
); voir la section 15.9.2.1 de la spécification ; si vous souhaitez accepter une gamme de formats, jetez un coup d'œil à DateJS .Date.parse
(ce qui renvoie un certain nombre de millisecondes que vous pouvez ensuite alimenternew Date(ms)
). Mais attention, cela peut varier d'un navigateur à l'autre. Jusqu'à récemment, les implémentations pouvaient faire à peu près tout ce qu'elles voulaientDate.parse
. La nouvelle spécification de la 5e édition a maintenant un format minimum qui doit être accepté, mais je ne compterais pas encore là-dessus.x = new Date(); x2 = new Date(x.getTime() + 1000)
, où 1000 est un incrément de milliseconde.Date
les objets sont mutables. Vous stockez le mêmeDate
objet trois fois dans le tableau. Si vous voulez troisDate
objets différents , vous devez créer trois objets:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
la source
new Date("2009-09-11")
mais Firefox ne le fait pas. Je pense que la plupart des navigateurs acceptentnew Date("2009/09/11")
une solution simplevar arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
.-
par/
et en espérant que les navigateurs l'accepteront, serait de diviser la chaîne en parties:var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
Notez que nous utilisonsm-1
ici, car les mois javascript sont des valeurs énumérées (janvier étant 0, pas 1), etd+1
parce que nous fais l'incrémentation déjà dans l'affectation initiale (cela corrigera automatiquement le 29 février, etc.)Aucun des exemples de cette réponse ne semble fonctionner avec les jours d'ajustement de l'heure d'été. Ces jours-là, le nombre d'heures dans une journée n'est pas de 24 (ils sont de 23 ou 25, selon que vous «sautez en avant» ou «reculez».)
La fonction javascript AddDays ci-dessous représente l'heure d'été:
Voici les tests que j'ai utilisés pour tester la fonction:
la source
Le moyen le plus simple est de convertir en millisecondes et d'ajouter 1000 * 60 * 60 * 24 millisecondes, par exemple:
la source
1000*60*60*24
xDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
mais c'est vraiment similaire àgetTime()
/setTime()
, vraiment.new Date(Date.now()+1000*60*60*24);
Demain en une seule ligne en pur JS mais c'est moche !
Voici le résultat:
la source
Vous devez d'abord analyser votre chaîne avant de suivre la suggestion des autres:
Si vous le souhaitez à nouveau dans le même format, vous devrez le faire "manuellement":
Mais je suggère d'obtenir Date.js comme mentionné dans d'autres réponses, cela vous aidera beaucoup .
la source
Je pense que rien n'est plus sûr
.getTime()
et.setTime()
, donc ce devrait être le meilleur, et aussi performant..setDate()
pour une date invalide (comme 31 + 1) est trop dangereux et cela dépend de l'implémentation du navigateur.la source
Obtenir les 5 prochains jours:
la source
Deux méthodes:
1:
2: similaire à la méthode précédente
la source
Obtenez la valeur de chaîne de la date à l'aide de la méthode dateObj.toJSON () Réf: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON Découpez la date à partir du retour puis incrémentez du nombre de jours souhaité.
la source
Exemple
Résultat
la source
Je ne sais pas exactement s'il s'agit d'un BUG (testé Firefox 32.0.3 et Chrome 38.0.2125.101), mais le code suivant échouera sur le Brésil (-3 GMT):
Résultat:
L'ajout d'une heure à la date le fera fonctionner parfaitement (mais ne résout pas le problème).
Résultat:
la source
Résultats dans une représentation sous forme de chaîne de la date de demain. Utilisez new Date () pour obtenir la date du jour, en ajoutant un jour à l'aide de Date.getDate () et Date.setDate () et en convertissant l'objet Date en chaîne.
la source
Incrémentation de l'année de la date avec vanilla js:
Juste au cas où quelqu'un voudrait incrémenter une autre valeur que la date (jour)
la source
Via JS natif, pour ajouter un jour, vous pouvez faire ce qui suit:
Une autre option consiste à utiliser la
moment
bibliothèque:la source
Incrément de date prenant en compte le fuseau horaire / l'heure d'été pour les dates JavaScript:
la source