Ich habe eine mySQL-Datenbank, in der ich die Zeit in diesem Format automatisch speichere:

2015-08-17 21:31:06

Ich kann diesen Zeitstempel aus meiner Datenbank abrufen und in Javascript bringen. Ich möchte dann die aktuelle Datums- und Uhrzeitangabe in Javascript abrufen und bestimmen, wie viele Tage zwischen der aktuellen Datums- und Uhrzeitangabe und der Datums- und Uhrzeitangabe liegen, die ich aus der Datenbank abgerufen habe.

Ich habe diese Funktion gefunden, als ich nachforschte, wie man die aktuelle Datums- und Uhrzeitangabe in Javascript erhält:

Date();

Aber es scheint das Datum in diesem Format zurückzugeben:

Tue Aug 18 2015 10:49:06 GMT-0700 (Pacific Daylight Time)

Es muss einen einfacheren Weg geben, dies zu tun, als Charakter für Charakter zu gehen und es aus beiden herauszusuchen?

0
Mike 18 Aug. 2015 im 20:53

4 Antworten

Beste Antwort

Sie können den Unterschied direkt in Ihrer Abfrage auswählen:

SELECT DATEDIFF(now(), myDateCol) FROM myTable;
1
Benvorth 18 Aug. 2015 im 18:00

Da keine der anderen Antworten ganz richtig war:

var pieces = "2015-08-17 21:31:06".split(' ');
var date = pieces[0].split('-');
var time = pieces[1].split(':');

var yr = date[0], mon = date[1], day = date[2];
var hour = time[0], min = time[1], sec = time[2];
var dateObj = new Date(yr, mon, day, hr, min, sec);

//if you want the fractional part, omit the call to Math.floor()
var diff = Math.floor((Date.now() - dateObj.getTime()) / (1000 * 60 * 60 * 24));

Beachten Sie, dass sich nichts davon mit dem Zeitzonenunterschied zwischen dem Browser und dem, was Sie in der Datenbank gespeichert haben, befasst. Hier ist ein Versatzbeispiel:

var tzOff = new Date().getTimezoneOffset() * 60 * 1000; //in ms
0
Jared Smith 18 Aug. 2015 im 18:21

Das Date-Objekt verfügt über eine Funktion namens getTime (), mit der Sie den aktuellen Zeitstempel in Millisekunden erhalten. Sie können dann den Diff erhalten und in Tage umrechnen, indem Sie durch (1000 * 3600 * 24) dividieren, z.

var date1 = new Date()
var date2 = new Date()
var diffInMs = date2.getTime() - date1.getTime()
var diffInDays = diffInMs/(1000*3600*24)
0
Souvik Mitra 18 Aug. 2015 im 18:19

Sie können ein neues Datum in Javascript erstellen, indem Sie die Daten, die Sie von Ihrem Backend erhalten, als erstes Argument übergeben.
Sie müssen sicherstellen, dass das Format akzeptiert wird. In Ihrem Fall müssen wir das Leerzeichen durch ein T ersetzen. Möglicherweise können Sie das Format auch über das Back-End ändern. Einige gute Beispiele finden Sie in den MDN-Dokumenten.

var d = new Date("2015-08-17T21:31:06");
console.log(d.getMonth());

Um die Differenz in Tagen zu berechnen, können Sie Folgendes tun:

var now = new Date();
var then = new Date("2015-08-15T21:31:06");
console.log((now - then)/1000/60/60/24);
2
Mihai Vilcu 18 Aug. 2015 im 18:12