2013-05-29 11 views
12

Gibt es eine Möglichkeit, JavaScript-Datumsfunktionen zu verketten?Wie JavaScript-Datumsfunktionen verketten

zum Beispiel, ich möchte etwas wie folgt aus:

var d = new Date().setMinutes(0).setSeconds(0).setMilliseconds(0); 

diese Syntax bricht mit Fehler:

(new Date).setMinutes(0).setSeconds is not a function 

Ich weiß, ich kann dies tun:

var d = new Date(); 
d.setMinutes(0); 
d.setSeconds(0); 
d.setMilliseconds(0); 

aber das fühlt sich umständlich und umständlich an. Gibt es einen besseren Weg?

+1

Ja. http://momentjs.com/ – SLaks

+0

Schön. Vielen Dank. Ich hatte JodaTime für Java gesehen und angenommen, dass es eine entsprechende Bibliothek in Javascript gab. – MyTimeFinder

Antwort

7

Sie können einstellen, Sekunden und Millisekunden mit dem setMinutes Methode:

var d = new Date(); 
d.setMinutes(0,0,0); 

arbeitet auch mit Stunden- d.setHours(0,0,0,0);

+1

Ich denke, die Antwort ist "Nein" Sie können nicht verketten, aber ich wusste nicht, dass setHours (und anscheinend SetFullYear) mehrere Parameter annehmen kann. Es ist eine vernünftige Arbeit für das, was ich brauche. – MyTimeFinder

3

Sie können Parameter an Date constructor übergeben. Z.B.

var d = new Date(null, null, null, null, 0, 0, 0); 
+0

@kennebec Was möchten Sie das tatsächliche Datum haben? –

+1

Dies wäre die beste Antwort, wenn "Null" standardmäßig auf das aktuelle Jahr, den aktuellen Monat, das aktuelle Datum gesetzt wird. Dies scheint mir jedoch der 31. Dezember 1899 zu sein. Normalerweise versuche ich Daten zu manipulieren, die sich auf das Datum beziehen, an dem der Benutzer mit meiner Website interagiert. Ich weiß nicht, welcher Tag es wird, aber ich will Mittag an diesem Tag oder 5 Tage am Mittag von diesem Tag. d.setHours (16,0,0,0), um etwas für diesen Tag um 16:00 Uhr festzulegen, ist mein häufigstes Szenario. – MyTimeFinder

0

Diese Frage ist ziemlich alt, aber man kann mit Yuriy Kennebec Antwort kombinieren machen Sie es eine einzelne Zeile, falls gewünscht:

var d = new Date(new Date().setMinutes(0,0,0))