In JavaScript können Datumsangaben durch Aufrufen der getTime()
Methode oder in die Anzahl der Millisekunden seit dem Epoc umgewandelt werden Verwenden des Datums in einem numerischen Ausdruck .
Um den Unterschied zu erhalten, subtrahieren Sie einfach die beiden Daten.
Um ein neues Datum basierend auf der Differenz zu erstellen, übergeben Sie einfach die Anzahl der Millisekunden im Konstruktor.
var oldBegin = ...
var oldEnd = ...
var newBegin = ...
var newEnd = new Date(newBegin + oldEnd - oldBegin);
Das sollte einfach funktionieren
BEARBEITEN : Fehler behoben, auf den @bdukes hingewiesen hat
EDIT :
Für eine Erklärung des Verhaltens, oldBegin
, oldEnd
, und newBegin
sind Date
Instanzen. Aufruf Betreiber +
und -
wird Javascript Auto - casten auslösen und wird das automatisch aufrufen valueOf()
Prototyp Verfahren dieser Objekte. Es kommt vor, dass die valueOf()
Methode Date
als Aufruf von im Objekt implementiert ist getTime()
.
Also im Grunde genommen: date.getTime() === date.valueOf() === (0 + date) === (+date)
Date
Objekte sein? Es ist schwer zu sagen, um welche Art von Objekt es sich handelt, da die Variablendeklaration hier weggelassen wird.JavaScript unterstützt die Datumsdifferenz sofort
Nun einige Fallstricke. Versuche dies:
Wenn Sie also das Risiko haben, eine Zahl und ein Datum hinzuzufügen, konvertieren Sie das Datum
number
direkt in.Mein erstes Beispiel zeigt die Kraft des Datumsobjekts, aber es scheint tatsächlich eine Zeitbombe zu sein
quelle
-
zwingt die Argumente zur Zahl, sodass das Datum seinen Zeitwert zurückgibt. Der+
Operator ist überlastet, daher kann es zu Addition, Zwang zur Nummerierung oder Verkettung kommen. Da Dates in diesem Fall zu String gezwungen werden,+
erfolgt die Verkettung. Verwirrung ist nicht die Schuld des Date-Objekts, sondern der Überladung von Operatoren.Siehe JsFiddle DEMO
für Ihren HTML-Code:
quelle
Wenn Sie sich nicht für die Zeitkomponente interessieren, können Sie
.getDate()
und verwenden.setDate()
einfach einstellen.Gehen Sie folgendermaßen vor, um Ihr Enddatum auf 2 Wochen nach Ihrem Startdatum festzulegen:
Gehen Sie folgendermaßen vor, um die Differenz (in Tagen) zwischen zwei Daten zurückzugeben:
Zum Schluss ändern wir die erste Funktion so, dass der von 2nd zurückgegebene Wert als Parameter verwendet werden kann:
quelle
GetDateDiff()
wird über Monatsgrenzen hinweg brechen. Zum Beispiel werden 2011/04/26 und 2011/05/01 -25 zurückgeben, aber der Offset sollte 5 Tage betragen.Danke @ Vincent Robert , am Ende habe ich Ihr grundlegendes Beispiel verwendet, obwohl es tatsächlich so ist
newBegin + oldEnd - oldBegin
. Hier ist die vereinfachte Endlösung:quelle
getTime
und manchmal nichtAbhängig von Ihren Anforderungen berechnet diese Funktion die Differenz zwischen den beiden Tagen und gibt ein Ergebnis in Dezimalpunkten zurück.
quelle
Math.abs()
Anruf tätigen, erhalten Sie immer eine positive Dezimalstelle.date.getTime()
, um Zeit in Zukunft / Vergangenheit zu erhalten. `var nextMinute = neues Datum (someDate.getTime () + 60 * 1000);Wenn Sie moment.js verwenden, gibt es eine einfachere Lösung, mit der Sie den Unterschied in Tagen in einer einzigen Codezeile feststellen können.
Weitere Details finden Sie auf der Seite moment.js
Prost, Miguel
quelle
quelle
erweiterter Code für alternative Änderungen.
http://jsfiddle.net/vvGPQ/48/
quelle
quelle
quelle
Dieser Code füllt die Dauer der Studienjahre aus, wenn Sie das Start- und Enddatum (qualifiziertes akkreditiertes Datum) des Studiums eingeben und prüfen, ob die Dauer weniger als ein Jahr beträgt, wenn ja, die Warnung, dass eine Nachricht berücksichtigt wird, gibt es drei Eingabeelemente, das erste
txtFromQualifDate
und das erste zweitetxtQualifDate
und drittetxtStudyYears
es wird das Ergebnis der Anzahl der Jahre mit Bruch zeigen
quelle
getFullYear
die dafür konzipiert wurde. ------- Siehe datejs Bibliothek auf Google Code, die möglicherweise die meisten Eckfälle unterstütztWenn Sie Datumsobjekte verwenden und dann die
getTime()
Funktion für beide Datumsangaben verwenden, erhalten Sie die jeweiligen Zeiten seit dem 1. Januar 1970 in einem Zahlenwert. Sie können dann die Differenz zwischen diesen Zahlen erhalten.Wenn Ihnen das nicht hilft, lesen Sie die vollständige Dokumentation: http://www.w3schools.com/jsref/jsref_obj_date.asp
quelle
Der folgende Code gibt die verbleibenden Tage von heute bis zum Futures-Datum zurück.
Abhängigkeiten: jQuery und MomentJs.
quelle
quelle
DAS HABE ICH AN MEINEM SYSTEM GETAN.
quelle