Die Date-Objekt mit doe sn't Überladung +
, so new Date() + n
verkettet einfach beide Operanden als Strings.
Eg:
new Date() + (-1) * 60 * 1000
entspricht
String(new Date()) + String((-1) * 60 * 100)
und Ausbeuten (je nach locale)
Fri Nov 11 2016 09:05:43 GMT+0100-6000
Das zweite Beispiel ergibt einen Wert, weil die "-6000" Looks wie ein Zeitzonenmodifikator, der 60 Stunden subtrahiert, obwohl es bereits einen gibt. Dies ist eine Parsing-Eigenart von Chrome - Firefox wird es ablehnen, aber Chrome wird die "-6000" akzeptieren und ein Datum sechzig Stunden in der Zukunft ergeben.
Dies funktioniert nur, wenn die angehängte Zeichenfolge genau vier Ziffern (die ersten zwei Ziffern für die Stunden, zwei für die Minuten) und hat entweder ein + oder ein - davor. Deshalb funktioniert es, wenn Sie "-6000", aber nicht "-60000" hinzufügen. Es würde auch nicht mit positiven Zahlen funktionieren, es sei denn, Sie haben das "+" Zeichen manuell hinzugefügt.
Ich vermute, dass das, was Sie eigentlich wollen
Date.now() - 60 * 1000
Sie möchten wahrscheinlich "Date.now()" anstelle von "new Date()" verwenden. 'new Date(). toString()' gibt eine Zeichenkette zurück, und wenn Sie '+ (-1)' tun, verkettet es anstatt zu addieren. Also gibt es etwas wie "Fr 11. November 2016 00:02:59 GMT-0800 (Pacific Standard Time) -60000" – mash
@mash, aber warum funktioniert dann der zweite Code? – KWeiss
@KWeiss ehrlich gesagt keine Ahnung, aus irgendeinem Grund "Fr 11. November 2016 00:05:05 GMT-0800 (Pacific Standard Time) -1000" ist ein gültiges Datum, aber "Fr 11 November 2016 00:05:05 GMT-0800 (Pacific Standard Time) -10000 "ist nicht. Nicht wirklich sicher, wie die Zahlen nach dem - als geparst werden. – mash