Ajouter des jours à JavaScript Date




javascript change title (24)

Pour ceux qui utilisent Angular:

Faites juste:

$scope.booking.totTijd.setMinutes($scope.booking.totTijd.getMinutes()+15);
$scope.booking.totTijd.setDate($scope.booking.totTijd.getDate() + 1);

Comment ajouter des jours à la Date actuelle en utilisant JavaScript. Est-ce que JavaScript a une fonction intégrée comme AddDay de .Net?


Non, javascript n'a pas de fonction intégrée, mais vous pouvez utiliser une simple ligne de code

timeObject.setDate(timeObject.getDate() + countOfDays);

Merci Jason pour ta réponse qui fonctionne comme prévu, voici un mix de ton code et le format pratique d'AnthonyWJones:

Date.prototype.addDays = function(days){
    var ms = new Date().getTime() + (86400000 * days);
    var added = new Date(ms);
    return added;
}

La solution la plus simple.

 Date.prototype.addDays = function(days) {
   this.setDate(this.getDate() + parseInt(days));
   return this;
 };

 // and then call

 var newDate = new Date().addDays(2); //+2 days
 console.log(newDate);

 // or

 var newDate1 = new Date().addDays(-2); //-2 days
 console.log(newDate1);


Vous pouvez en créer un avec: -

Date.prototype.addDays = function(days) {
  var dat = new Date(this.valueOf());
  dat.setDate(dat.getDate() + days);
  return dat;
}

var dat = new Date();

alert(dat.addDays(5))

Cela prend soin d'incrémenter automatiquement le mois si nécessaire. Par exemple:

8/31 + 1 jour deviendra 9/1 .

Le problème avec l'utilisation directe de setDate est qu'il s'agit d'un mutateur et que ce genre de chose est mieux évité. ECMA a jugé bon de traiter Date comme une classe mutable plutôt qu'une structure immuable.



int days = 1;
var newDate = new Date(Date.now() + days * 24*60*60*1000);

CodePen

var days = 2;
var newDate = new Date(Date.now() + days * 24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);


J'ai utilisé cette approche pour obtenir la bonne date dans une ligne pour obtenir le temps plus un jour suivant ce que les gens disaient ci-dessus.

((new Date()).setDate((new Date()).getDate()+1))

Je pensais juste que je construirais une normale (new Date()):

(new Date()).getDate()
> 21

En utilisant le code ci - dessus je peux maintenant mettre tout cela à l' intérieur Date()de (new Date())et il se comporte normalement.

(new Date(((new Date()).setDate((new Date()).getDate()+1)))).getDate()
> 22

ou pour obtenir l' Dateobjet:

(new Date(((new Date()).setDate((new Date()).getDate()+1))))

Il y a une setDate et une méthode getDate , qui vous permettent de faire quelque chose comme ceci:

var newDate = aDate.setDate(aDate.getDate() + numberOfDays);

Si vous souhaitez à la fois soustraire un nombre de jours et formater votre date dans un format lisible par un humain, vous devriez envisager de créer un objet DateHelper personnalisé ressemblant à ceci:

var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0" + date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0" + (date.getMonth()+1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

(voir aussi ce violon )


J'utilise quelque chose comme:

new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)

Fonctionne avec le temps d'économie de jour:

new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

Fonctionne avec la nouvelle année:

new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

Il peut être paramétré:

function DateAdd(source, amount, step) {
  var factor = 1;
  if (step == "day") factor = 24 * 60 * 60 * 1000;
  else if (step == "hour") factor = 60 * 60 * 1000;
  ...
  new Date(source.getTime() + amount * factor);
}

Un grand nombre de ces réponses nécessitent une grande bibliothèque, ne prennent pas en charge l'heure d'été ou requièrent une syntaxe trop complexe. J'ai écrit un component léger qui résout tous ces problèmes et fonctionne aussi pour n'importe quelle unité de temps au lieu de seulement quelques jours. Espérons que cela aidera quelques personnes à regarder ces réponses. Vous pouvez simplement utiliser la fonction dateAdd () et transmettre un objet date, une valeur à incrémenter (+/-) et l'unité à incrémenter. Vous récupérerez un objet Date mis à jour.

Par exemple, pour ajouter 5 jours:

var originalDate = new Date('June 25, 2017 12:00:00');

var newDate = dateAdd(originalDate, 5, 'days'); // => June 30, 2017 12:00:00

Vous pouvez également utiliser ceci avec des secondes, des minutes, des mois, des années, etc.

Cette solution ne fait rien de spécial pour l'heure d'été en ajoutant de petites unités de temps (jusqu'à des heures) mais en tient compte lors de l'ajout d'unités plus grandes. Cela signifie que l'ajout de 5 heures à une heure qui traversera la DST semblera vraiment ajouter 6/4 heures selon le printemps / automne. Pour les unités de temps plus importantes, cependant, les heures resteront les mêmes et seul le jour / mois / année sera mis à jour. Cela signifie que lorsque vous franchissez une limite DST, l'ajout de 24 heures se comportera différemment de l'ajout d'un jour. Cela vous permet de spécifier le comportement que vous préférez, car il y a des moments où les deux résultats ont un sens (incrémentation du jour par rapport à l'ajout de 24 heures complètes).

Exemples d'heure d'été (EST):

// Spring (time skips an hour at 2am)
var dstDate = new Date('March 12, 2016 01:15:00');
var newDate1 = dateAdd(dstDate, 1, 'days');   // => March 13, 2016 1:15:00
var newDate2 = dateAdd(dstDate, 24, 'hours'); // => March 13, 2016 02:15:00

// Fall (time goes back an hour at 2am)
var dstDate = new Date('November 5, 2016 01:15:00');
var newDate1 = dateAdd(dstDate, 1, 'days');   // => November 6, 2016 1:15:00
var newDate2 = dateAdd(dstDate, 24, 'hours'); // => November 7, 2016 00:15:00

N'hésitez pas à importer le composant pour l'utiliser!


Juste passé des âges à essayer de comprendre ce que l'affaire était avec l'année ne pas ajouter en suivant les exemples de plomb ci-dessous.

Si vous voulez simplement ajouter n jours à la date que vous avez, vous êtes le mieux à aller:

myDate.setDate (myDate.getDate () + n);

ou la version longwinded

var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);

Ce truc d'aujourd'hui / demain est déroutant. En définissant la date actuelle dans votre nouvelle variable de date, vous allez gâcher la valeur de l'année. Si vous travaillez à partir de la date d'origine, vous ne le ferez pas.


Je suppose que je vais donner une réponse aussi:
Personnellement, j'aime essayer d'éviter les déclarations de variables, les appels de méthode et les appels de constructeurs gratuits, car ils sont tous coûteux en termes de performances. (dans la mesure, bien sûr)
J'allais laisser ceci comme juste commentaire sous la réponse donnée par @AnthonyWJones mais ai pensé mieux de lui.

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setTime( 864E5 * days + this.valueOf() ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setTime( 864E5 * days + date.valueOf() ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setTime( 864E5 * days + date.valueOf() ) && date;
};

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:
2 novembre 2014 02:00 était la fin de l'heure d'été.

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 09:30:00

Si vous cherchez à conserver l'heure à l'heure d'été (donc 10h30 sera toujours 10h30) ...

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setDate( this.getDate() + days ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setDate( date.getDate() + days ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setDate( date.getDate() + days ) && date;
};

Donc, maintenant vous avez ...

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 10:30:00


Essayer

var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() +  (duration * 24 * 60 * 60 * 1000));

Utiliser 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 ne donnera pas ce que vous attendiez.


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:

var nextWeek = moment().add(7, 'days');
alert(nextWeek);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>

Référence: http://momentjs.com/docs/#/manipulating/add/


Vieux je sais, mais parfois j'aime ça:

function addDays(days) {
    return new Date(Date.now() + 864e5 * days);
}

var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);

Soyez prudent, car cela peut être difficile. 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, le réglage d'un numéro de date comme "32" fonctionnera normalement très bien pour le déplacer au mois suivant.


Edit: Au lieu de setTime() (ou setHours() ), vous pouvez le faire de la façon suivante:

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

var tomorrow = new Date().addDays(1);

Vieux:

Au lieu d'utiliser setTime() vous pouvez utiliser setHours() :

Date.prototype.addDays= function(d){
    this.setHours(this.getHours() + d * 24);
    return this;
};

var tomorrow = new Date().addDays(1);

Voir le JSFiddle ...


Ces réponses me semblent confuses, je préfère:

var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);

getTime () nous donne des millisecondes depuis 1970, et 86400000 est le nombre de millisecondes dans une journée. Par conséquent, ms contient des millisecondes pour la date souhaitée.

L'utilisation du constructeur milliseconde donne l'objet de date désiré.


Ma solution est:

nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);

cette solution n'a pas de problème avec l'heure d'été. En outre, on peut ajouter / sous n'importe quels compensations pour des années, des mois, des jours etc.

day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);

est le code correct.


En retard à la fête, mais si vous utilisez jQuery il y a un excellent plugin appelé Moment:

moment.js

var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();

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


function addDays(n){
    var t = new Date();
    t.setDate(t.getDate() + n); 
    var month = "0"+(t.getMonth()+1);
    var date = "0"+t.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
     var date = date +"/"+month +"/"+t.getFullYear();
    alert(date);
}

addDays(5);

Code très simple pour ajouter des dates dans le script java.

var d = new Date();
d.setDate(d.getDate() + prompt('how many days you want to add write here'));
alert(d);





time