Hoe u dagen kunt toevoegen aan de huidige Date
met JavaScript. Heeft JavaScript een ingebouwde functie zoals AddDay
van .Net?
Antwoord 1, autoriteit 100%
Je kunt er een maken met:-
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
console.log(date.addDays(5));
Antwoord 2, autoriteit 60%
Correct antwoord:
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
Onjuist antwoord:
Dit antwoord somsgeeft het juiste resultaat, maar geeft heel vaak het verkeerde jaar en de verkeerde maand. De enige keer dat dit antwoord werkt, is wanneer de datum waaraan u dagen toevoegt, toevallig het huidige jaar en de huidige maand heeft.
// Don't do it this way!
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
Bewijs / Voorbeeld
Antwoord 3, autoriteit 16%
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
Wees voorzichtig, want dit kan lastig zijn. Bij het instellen van tomorrow
werkt het alleen omdat de huidige waarde overeenkomt met het jaar en de maand voor today
. Het instellen op een datumnummer zoals “32” werkt normaal nog steeds prima om het naar de volgende maand te verplaatsen.
Antwoord 4, Autoriteit 10%
Mijn eenvoudige oplossing is:
nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);
Deze oplossing heeft geen probleem met de zomertijd. Ook kan men een offset voor jaren, maanden, dagen enz.
toevoegen / sub toevoegen
day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);
is de juiste code.
Antwoord 5, Autoriteit 9%
Deze antwoorden lijken verwarrend voor mij, ik geef de voorkeur:
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
Get time () geeft ons milliseconden sinds 1970 en 86400000 is het aantal milliseconden op een dag.
Daarom bevat MS milliseconden voor de gewenste datum.
Het gebruik van de Milliseconde-constructeur geeft het gewenste datumobject.
Antwoord 6, Autoriteit 4%
Probeer
var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() + (duration * 24 * 60 * 60 * 1000));
Setdate gebruiken () Om een datum toe te voegen, kan je probleem niet oplossen, probeer wat dagen toe te voegen aan een maand van feb. Als je probeert nieuwe dagen aan toe te voegen, zal het niet leiden tot wat je verwachtte.
Antwoord 7, Autoriteit 3%
Ik heb er eeuwen over gedaan om erachter te komen wat de deal was met het jaar dat niet werd toegevoegd bij het volgen van de onderstaande voorbeelden.
Als je gewoon n dagen wilt toevoegen aan de datum die je hebt, kun je het beste gewoon gaan:
myDate.setDate(myDate.getDate() + n);
of de langdradige versie
var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);
Deze dingen van vandaag/morgen zijn verwarrend. Door de huidige datum in uw nieuwe datumvariabele in te stellen, verknoeit u de jaarwaarde. als je vanaf de oorspronkelijke datum werkt, doe je dat niet.
Antwoord 8, autoriteit 2%
Dit is de manier waarop dagen, maanden en jaren voor een bepaalde datum in Javascript worden toegevoegd.
// To add Days
var d = new Date();
d.setDate(d.getDate() + 5);
// To add Months
var m = new Date();
m.setMonth(m.getMonth() + 5);
// To add Years
var m = new Date();
m.setFullYear(m.getFullYear() + 5);
Antwoord 9, autoriteit 2%
int days = 1;
var newDate = new Date(Date.now() + days * 24*60*60*1000);
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);
Antwoord 10, autoriteit 2%
Gebruik indien mogelijk moment.js. JavaScript heeft geen erg goede native datum/tijd-methoden. Het volgende is een voorbeeld van de syntaxis van 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>
Antwoord 11
Ik heb gisteravond deze extensies gemaakt:
u kunt zowel positieve als negatieve waarden doorgeven;
voorbeeld:
var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);
Date.prototype.addDays = function (num) {
var value = this.valueOf();
value += 86400000 * num;
return new Date(value);
}
Date.prototype.addSeconds = function (num) {
var value = this.valueOf();
value += 1000 * num;
return new Date(value);
}
Date.prototype.addMinutes = function (num) {
var value = this.valueOf();
value += 60000 * num;
return new Date(value);
}
Date.prototype.addHours = function (num) {
var value = this.valueOf();
value += 3600000 * num;
return new Date(value);
}
Date.prototype.addMonths = function (num) {
var value = new Date(this.valueOf());
var mo = this.getMonth();
var yr = this.getYear();
mo = (mo + num) % 12;
if (0 > mo) {
yr += (this.getMonth() + num - mo - 12) / 12;
mo += 12;
}
else
yr += ((this.getMonth() + num - mo) / 12);
value.setMonth(mo);
value.setYear(yr);
return value;
}
Antwoord 12
De eenvoudigste aanpak die ik heb geïmplementeerd, is om Date() zelf te gebruiken.
`
const days = 15;
// Date.now() gives the epoch date value (in milliseconds) of current date
nextDate = new Date( Date.now() + days * 24 * 60 * 60 * 1000)
`
Antwoord 13
het eenvoudigste antwoord is, ervan uitgaande dat het nodig is om 1 dag toe te voegen aan de huidige datum:
var currentDate = new Date();
var numberOfDayToAdd = 1;
currentDate.setDate(currentDate.getDate() + numberOfDayToAdd );
Om u regel voor regel uit te leggen wat deze code doet:
- Maak de variabele huidige datummet de naam currentDate. Standaard wijst “new Date()” automatisch de huidige datum toe aan de variabele.
- Maak een variabele om het aantal dag(en) op te slaan dat moet worden toegevoegdaan de datum (u kunt deze variabele overslaan en direct de waarde in de derde regel gebruiken)
- Verander de waardevan Datum (omdat Datum het nummer van de maanddag is die in het object is opgeslagen) door dezelfde waarde + het gewenste nummer op te geven. De overstap naar de volgende maand gaat automatisch
Antwoord 14
Een oplossing ontworpen voor de pijpleidingoperator:
const addDays = days => date => {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
Gebruik:
// Without the pipeline operator...
addDays(7)(new Date());
// And with the pipeline operator...
new Date() |> addDays(7);
Als u meer functionaliteit nodig heeft, raad ik aan de datum-fns bibliotheek te zoeken.
Antwoord 15
zonder de tweede variabele te gebruiken, kunt u 7 vervangen door uw volgende x dagen:
let d=new Date(new Date().getTime() + (7 * 24 * 60 * 60 * 1000));
Antwoord 16
om 30 dagen te ondervatten (24h = 86400000ms)
new Date(+yourDate - 30 *86400000)
Antwoord 17
de eenvoudigste oplossing.
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);
Antwoord 18
Te laat op het feest, , maar als u jQuery
vervolgens gebruikt strik>is er een uitstekende plug-in genaamd Moment:
var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();
http://momentjs.com/docs/#/manipulating/
En nog veel meer goede dingen!
Bewerken: jQuery-referentie verwijderd dankzij de opmerking van aikeru
Antwoord 19
U kunt JavaScript gebruiken, geen jQuery vereist:
var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
Formatting to dd/mm/yyyy :
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
Antwoord 20
Bedankt Jason voor je antwoord dat werkt zoals verwacht, hier is een mix van je code en het handige formaat van AnthonyWJones:
Date.prototype.addDays = function(days){
var ms = new Date().getTime() + (86400000 * days);
var added = new Date(ms);
return added;
}
Antwoord 21
Oud, ik weet het, maar soms vind ik dit leuk:
function addDays(days) {
return new Date(Date.now() + 864e5 * days);
}
Antwoord 22
Zo simpel als dit:
new Date((new Date()).getTime() + (60*60*24*1000));
Antwoord 23
Nee, javascript heeft geen ingebouwde functie, maar
je kunt een simpele regel code gebruiken
timeObject.setDate(timeObject.getDate() + countOfDays);
Antwoord 24
Waarom zo ingewikkeld?
Laten we aannemen dat u het aantal toe te voegen dagen opslaat in een variabele met de naam days_to_add.
Dan moet deze kort het doen:
calc_date = new Date(Date.now() +(days_to_add * 86400000));
met datum. Nu () krijgt u de daadwerkelijke UNIX-tijdstempel als milliseconden en vervolgens voegt u zoveel milliseconden toe terwijl u dagen aan wilt toevoegen.
Op een dag is 24h 60min 60s * 1000ms = 86400000 ms of 864E5.
Antwoord 25
Ik had problemen met zomertijd met de voorgestelde oplossing.
Met behulp van getUTCDate
/ setUTCDate
In plaats daarvan loste ik mijn probleem op.
// Curried, so that I can create helper functions like `add1Day`
const addDays = num => date => {
// Make a working copy so we don't mutate the supplied date.
const d = new Date(date);
d.setUTCDate(d.getUTCDate() + num);
return d;
}
Antwoord 26
Generisch prototype zonder variabelen, het is van toepassing op een bestaande datumwaarde:
Date.prototype.addDays = function (days) {
return new Date(this.valueOf() + days * 864e5);
}
Antwoord 27
De Mozilla-documenten voor setdate () geven niet aan dat het eind van maandscenario’s aankleedt.
Zie https://developer.mozilla.org/en- US / docs / Javascript / Referentie / Global_Objects / Datum
Setdate ()
- Stelt de dag van de maand (1-31) in voor een bepaalde datum volgens de lokale tijd.
Daarom gebruik ik Setime () wanneer ik dagen nodig heb.
Antwoord 28
Ik denk dat ik ook een antwoord zal geven:
Persoonlijk probeer ik het gratis declareren van variabelen, methodeaanroepen en constructoraanroepen te vermijden, omdat ze allemaal duur zijn qua prestaties. (binnen redelijke grenzen natuurlijk)
Ik wilde dit achterlaten als een opmerking onder het antwoord van @AnthonyWJones, maar dacht er beter over na.
// 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;
};
Het bovenstaande respecteert de zomertijd. Dit betekent dat als u een aantal dagen toevoegt die de zomertijd overschrijden, de weergegeven tijd (uur) verandert om dat weer te geven.
Voorbeeld:
2 nov. 2014 02:00 was het einde van de zomertijd.
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
Als u de tijd wilt behouden tijdens de zomertijd (zodat 10:30 nog steeds 10:30 is)…
// 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;
};
Dus, nu heb je …
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
Antwoord 29
Ik gebruik zoiets als:
new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)
Werkt met tijdsbesparingstijd:
new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
werkt met nieuwjaar:
new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
Het kan parametriseren:
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);
}
ANTWOORD 30
Uitbreiden van prototype in JavaScript is misschien geen goed idee , vooral in professionele codebases.
Wat u wilt doen is de inheemse Date
Klasse verlengen:
class MyCustomDate extends Date {
addDays(days) {
const date = new MyCustomDate(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
}
const today = new MyCustomDate();
const nextWeek = today.addDays(7)
console.log(nextWeek)