1784 Stimmen

Wie kann man Tage zum Datum hinzufügen?

Hinzufügen von Tagen zum aktuellen Date JavaScript verwenden? Verfügt JavaScript über eine eingebaute Funktion wie die von .NET AddDay() ?

63voto

sufyan.shoaib Punkte 1067

Essayez

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

Mit setDate(), um ein Datum hinzuzufügen, wird Ihr Problem nicht gelöst, versuchen Sie, einige Tage zu einem Monat Feb hinzuzufügen, wenn Sie versuchen, neue Tage hinzuzufügen, wird es nicht in dem Ergebnis, was Sie erwartet.

32 Stimmen

Nein, dies sollte nicht als richtige Antwort markiert werden, da diese Lösung davon ausgeht, dass jeder Tag 24*60*60*1000 Sekunden hat, was nicht der Fall ist (Sommerzeit)!

0 Stimmen

Irgendwelche Hinweise auf das "Feb"-Problem mit setDate() ? Ist es das? stackoverflow.com/questions/5497637/

12 Stimmen

+1 Dies SOLLTE als richtige Antwort markiert werden. Ich glaube, dass es bei der "Sommerzeit" um Folgendes geht Präsentation und nicht über Wert die nur die Anzahl der Millisekunden angibt. Von Wert -Standpunkt - Tag ist CONST Zahl von Millisekunden, während in Bezug auf Präsentation kann es variieren.

52voto

Rumpleteaser Punkte 4054

Ich habe Ewigkeiten damit verbracht, herauszufinden, was es mit der Jahreszahl auf sich hat, die sich nicht addiert, wenn man den Beispielen unten folgt.

Wenn Sie einfach nur n Tage zu dem Datum hinzufügen wollen, das Sie haben, ist es am besten, einfach zu gehen:

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

oder die langatmige Version

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

Dieses Heute/Morgen-Zeug ist verwirrend. Indem Sie das aktuelle Datum in Ihre neue Datumsvariable setzen, bringen Sie den Jahreswert durcheinander, wenn Sie vom ursprünglichen Datum ausgehen.

10 Stimmen

Ich lese alle Antworten durch, bis ich dieses Juwel hier finde. Jetzt ergibt das einen Sinn. Erstaunlich, dass die Sache mit dem Heute/Morgen in fast allen Antworten kopiert wurde, obwohl es überhaupt keinen Sinn macht und nicht "für die Lesbarkeit und Klarheit" ist, wie der Autor in der am meisten hochgestimmten Antwort -im am meisten hochgestimmten Kommentar- sagt, es ist verwirrend und eine schlechte Praxis und falsch

52voto

RameshD Punkte 699

Der einfachste Ansatz, den ich umgesetzt habe, ist die Verwendung von Date() selbst. `

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)

`

1 Stimmen

Sie sollten die Antwort von NicoESIEA verwenden, wenn Sie sich für die Sommerzeit interessieren (was Sie tun sollten)

3 Stimmen

Dies ist bei weitem die eleganteste Lösung für das Problem, da sie die unangenehme Situation, Tage über den Monat hinaus zu setzen, in den Griff bekommt. Man könnte die Funktion buchstäblich so formulieren...function addTime(years, month, day). Wenn Sie es übertreiben wollen, können Sie die Stunden, Minuten, Sekunden und Millisekunden hinzufügen. Ich verwendet, um es eine Menge in Unity für die Verfolgung der Zeit im Spiel zu tun, weil es die Epoch-Methode verwendet.

35voto

serge Punkte 11778
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);

2 Stimmen

Upvote für den Verzicht auf eine Zwischendatumsvariable.

0 Stimmen

Dies ist die beste Antwort, weil sie keine Mutation enthält.

0 Stimmen

Nicht jeder Tag hat 24 Stunden, das gilt auch für die Sommerzeit und die Schaltsekunden.

31voto

user2910265 Punkte 784

Wenn Sie können, verwenden Sie moment.js . JavaScript hat keine sehr guten nativen Datum/Uhrzeit-Methoden. Im Folgenden finden Sie ein Beispiel für die Syntax von 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>

Referenz: http://momentjs.com/docs/#/manipulating/add/

0 Stimmen

Fragt nach einer integrierten Lösung

3 Stimmen

@kpull1 der Fragesteller hat den Lösungsbereich nicht eingeschränkt, indem er fragte, ob eine integrierte Lösung existiert.

6 Stimmen

Moderner Hinweis: Moment.js ist unglaublich schwer für einen so kleinen Zweck hinzuzufügen. Es ist mehrere hundert KB, und ist nicht Webpack-freundlich aus der Box.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X