2016-03-22 5 views
3

Ich möchte ein Javascript Datum Objekt machen zB. var now = new Date().getTime() für "Morgen um 8 Uhr", wie würde ich das erreichen?Javascript: Setze ein neues Datum auf morgen 8:00 Uhr

+2

Erstellen Sie eine Date-Instanz, fügen Sie 1 zum Tag des Monats hinzu und legen Sie dann die Stunden, Minuten, Sekunden und Millisekunden fest. [Dokumentation] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) – Pointy

+0

Wie füge ich 1 zum Tag des Monats meines aktuellen Datums hinzu? –

+0

Dafür gibt es viele Fragen zu SO. Siehe http://stackoverflow.com/questions/9444745/javascript-how-to-get-tomorrows-date-in-for-dat-ddmm-yy und http://stackoverflow.com/questions/3818193/how-to -add-Anzahl-der-Tage-bis-heute-Datum – Tushar

Antwort

7

könnten Sie wie folgt vorgehen:

var now = new Date(); 
now.setDate(now.getDate() + 1) 
now.setHours(8); 
now.setMinutes(0); 
now.setMilliseconds(0); 

auch this

überprüfen könnte Sie auch: var now = Date("2016-03-23T8:00:00");

Und var now = new Date(2016,03,23,8,0,0,0);

+1

Wenn ich mich bei der Verwendung Ihres ersten Codeblocks nicht irre, werden die Minuten und Sekunden die aktuellen sein (dh wenn der Alarm um 17:35 Uhr eingestellt ist, Es wird am nächsten Tag um 8:35 Uhr klingeln. – Aaron

+0

Sie haben Recht ich denke. Ich werde es reparieren, danke! – Rana

+0

Hmm, gemäß der MDN können Sie [die Millisekunden mit 'setSeconds' einstellen] (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/setSeconds), aber [nicht anders herum] (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/setMilliseconds) – Aaron

3

Wenn Sie eine Menge von Datum arithmetics haben, kann ich Ich empfehle nur dringend die Verwendung von moment.js.

Mit dieser Bibliothek wäre Ihr Code so kurz wie moment().add(1, 'days').hours(8).startOf('hour').

moment.js arbeitet mit "Moment" -Objekten, die JS-Daten umbrechen, um zusätzliche Methoden bereitzustellen. Der moment() Aufruf gibt einen Moment des aktuellen datetime zurück und ist somit der moment.js äquivalent zu new Date().
Von dort können wir die Methode moment.js verwenden, wie add(quantity, unit), die dem vorherigen Datum eine Dauer hinzufügt. Alle diese Manipulationsmethoden geben einen modifizierten Moment zurück, was bedeutet, dass wir sie verketten können.
Die hours() Methode ist je nach Argument sowohl ein Getter als auch ein Setter; hier geben wir es mit einer Zahl an, was bedeutet, dass wir den Stundenanteil der Stunde auf 8 setzen. Ein Anruf an .hours() hätte stattdessen den aktuellen Stundenanteil zurückgegeben.
startOf(unit) gibt einen Moment am Anfang der Einheit zurück, was bedeutet, dass alle kleineren Einheiten auf 0 gesetzt werden: moment().startOf('day') würde heute 00:00 Uhr zurückkehren.

+0

Es gibt kein moment.js-Tag, noch wird es in der Frage erwähnt, daher sollte die Antwort plain js ** verwenden und erklären, wie es funktioniert. – RobG

+0

Woher nehmen Sie diese Regeln? Was ist zu erklären, dass die Namen der Methoden oder eine schnelle Überprüfung auf den bereitgestellten Link nicht offensichtlich sind? Eine einfache JS-Antwort wurde bereits von Rana zur Verfügung gestellt. Wenn Sie ihre Kommentare überprüfen und bearbeiten, werden Sie sehen, dass ich versucht habe, dabei zu helfen, es besser zu machen. Ich bin für konstruktive Kritik, aber ich glaube nicht, dass ich viel mit deinem Feedback anfangen kann. – Aaron

+0

[* Wie schreibe ich eine gute Antwort? *] (Http://stackoverflow.com/help/how-to-answer). – RobG

Verwandte Themen