web-dev-qa-db-fra.com

Ajouter un jour à ce jour en javascript

Je suis sûr que beaucoup de gens ont posé cette question, mais quand j’ai vérifié les réponses, il me semble qu’ils ont tort, ce que j’ai trouvé

var startDate = new Date(Date.parse(startdate));
//The start date is right lets say it is 'Mon Jun 30 2014 00:00:00'

var endDate = new Date(startDate.getDate() + 1);
// the enddate in the console will be 'Wed Dec 31 1969 18:00:00' and that's wrong it should be  1 july 

Je sais que .getDate() retourne de 1 à 31 mais le navigateur ou le javascript n'augmente-t-il que le jour sans mettre à jour le mois et l'année?

et dans ce cas, devrais-je écrire un algorithme pour gérer cela? ou il y a un autre moyen?

23
kartal

Notez que Date.getDate ne renvoie que le jour du mois. Vous pouvez ajouter un jour en appelant Date.setDate et en ajoutant 1.

// Create new Date instance
var date = new Date()

// Add a day
date.setDate(date.getDate() + 1)

JavaScript mettra automatiquement à jour le mois et l'année pour vous.

MODIFIER:
Voici un lien vers une page où vous pouvez trouver toutes les informations utiles sur l’objet Date intégré et voir ce qui est possible: Date .

42
Aeveus

Le constructeur Date qui prend un nombre unique attend le nombre de millisecondes depuis 31 décembre 1969.

Date.getDate() renvoie l'index de jours pour l'objet de date en cours. Dans votre exemple, le jour est 30. L'expression finale est 31; elle renvoie donc 31 millisecondes après 31 décembre 1969.

Une solution simple utilisant votre approche existante consiste à utiliser Date.getTime() à la place. Ensuite, ajoutez une valeur de jours en millisecondes au lieu de 1.

Par exemple,

var dateString = 'Mon Jun 30 2014 00:00:00';

var startDate = new Date(dateString);

// seconds * minutes * hours * milliseconds = 1 day 
var day = 60 * 60 * 24 * 1000;

var endDate = new Date(startDate.getTime() + day);

JSFiddle

Veuillez noter que cette solution ne prend pas en charge les cas Edge liés à l'heure d'été, aux années bissextiles, etc. Il est toujours plus rentable d'utiliser plutôt une bibliothèque open source mature comme moment.js pour tout gérer.

11
Austin Brunkhorst
var datatoday = new Date();
var datatodays = datatoday.setDate(new Date(datatoday).getDate() + 1);
todate = new Date(datatodays);
console.log(todate);

Cela vous aidera ...

1
Narendra Sagadevan

Je pense que ce que vous recherchez, c'est:

startDate.setDate(startDate.getDate() + 1);

Aussi, vous pouvez jeter un oeil à Moment.js

Une bibliothèque de dates javascript pour analyser, valider, manipuler et formater des dates.

1
HJ05

Il y a eu des numéros du 31 et 28 février avec getDate() J'utilise cette fonction getTime et 24*60*60*1000 = 86400000

var dateWith31 = new Date("2017-08-31");
var dateWith29 = new Date("2016-02-29");

var amountToIncreaseWith = 1; //Edit this number to required input

console.log(incrementDate(dateWith31,amountToIncreaseWith));
console.log(incrementDate(dateWith29,amountToIncreaseWith));

function incrementDate(dateInput,increment) {
        var dateFormatTotime = new Date(dateInput);
        var increasedDate = new Date(dateFormatTotime.getTime() +(increment *86400000));
        return increasedDate;
    }

1
Black Mamba

Juste pour ajouter des fonctions au prototype Date:

De manière modifiable:

Date.prototype.addDays = function(n) {
   this.setDate(this.getDate() + n);
};

// Can call it tomorrow if you want
Date.prototype.nextDay = function() {
   this.addDays(1);
};

Date.prototype.addMonths = function(n) {
   this.setMonth(this.getMonth() + n);
};

Date.prototype.addYears = function(n) {
   this.setFullYear(this.getFullYear() + n);
}

// etc...

var currentDate = new Date();
currentDate.nextDay();
0
Ehouarn Perret

Si cela ne vous dérange pas d'utiliser une bibliothèque, DateJS ( https://github.com/abritinthebay/datejs/ ) facilitera la tâche. Vous auriez probablement intérêt à utiliser l'une des réponses à l'aide de JavaScript Vanilla, à moins que vous ne profitiez d'autres fonctionnalités de DateJS telles que l'analyse syntaxique de dates au format inhabituel.

Si vous utilisez DateJS, une ligne comme celle-ci devrait faire l'affaire:

Date.parse(startdate).add(1).days();

Vous pouvez également utiliser MomentJS, qui possède des fonctionnalités similaires ( http://momentjs.com/ ), mais je ne le connais pas aussi bien.

0
Ectropy

utilise cela, je pense qu'il est utile pour vous

var endDate=startDate.setDate(startDate.getDate() + 1);
0
user3730685