wake-up-neo.net

Zeitunterschied zwischen zwei Datumsangaben in Sekunden abrufen

Ich versuche, zwischen zwei Terminen in Sekunden einen Unterschied zu machen. Die Logik wäre so:

  • ein Datum festlegen, das jetzt sein würde;
  • festlegen eines Enddatums, das das anfängliche Datum plus einige Sekunden in der Zukunft sein würde (sagen wir zum Beispiel 15)
  • erhalte die Differenz zwischen diesen beiden (die Anzahl Sekunden)

Der Grund, warum ich es mit Datumsangaben mache, liegt daran, dass das Enddatum/die Endzeit von einigen anderen Variablen abhängt, und es ist nie dasselbe (es hängt davon ab, wie schnell ein Benutzer etwas tut), und ich speichere das Startdatum für andere Dinge.

Ich habe so etwas ausprobiert: 

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

Die Sache ist, dass ich nie den richtigen Unterschied bekomme. Ich habe versucht, durch 24 * 60 zu teilen, was mich bei den Sekunden zurücklassen würde, aber ich verstehe es nie richtig. Was ist also falsch an meiner Logik? Ich mache vielleicht einen dummen Fehler, da es ziemlich spät ist, aber es stört mich, dass ich es nicht schaffen werde zu arbeiten :)

100
Roland

Der Code

var startDate = new Date();
// Do your operations
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;

Oder noch einfacher (endDate - startDate) / 1000, wie in den Kommentaren erwähnt, es sei denn, Sie verwenden TypeScript.


Die Erklärung

Sie müssen die getTime() -Methode für die Date -Objekte aufrufen und diese dann einfach subtrahieren und durch 1000 dividieren (da diese ursprünglich in Millisekunden angegeben sind). Wenn Sie die getDate() -Methode aufrufen, erhalten Sie den Tag des Monats als Ganzzahl zwischen 1 und 31 (nicht nullbasiert), im Gegensatz zu der Epochenzeit, die Sie erhalten würden vom Aufrufen der getTime() -Methode, die die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00 darstellt


Schimpfen

Abhängig von Ihren datumsbezogenen Operationen möchten Sie möglicherweise in die Integration einer Bibliothek wie date.js oder moment.js investieren, die Dinge hervorbringt So viel einfacher für den Entwickler, aber das ist nur eine Frage der persönlichen Präferenz.

Zum Beispiel würden wir in moment.jsmoment1.diff(moment2, "seconds") machen, was wunderschön ist.


Nützliche Dokumente für diese Antwort

231
Juan Cortés
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();

var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>

Sie können new Date().getTime() verwenden, um Zeitstempel abzurufen. Dann können Sie die Differenz zwischen Ende und Anfang berechnen und den Zeitstempel, der ms ist, in s umwandeln.

const start = new Date().getTime();
const end = new Date().getTime();

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);

versuchen Sie, spezielle Funktionen aus höheren Programmiersprachen zu verwenden. JavaScript .getSeconds(); passt hier:

var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds(); 

var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds(); 

alert(specifiedTimeSeconds-currentTimeSeconds);
0
Gilbert Cut

Der folgende Code gibt den Zeitunterschied in Sekunden an. 

    var date1 = new Date(); // current date
    var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
    var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
    var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second

    alert(timeDiffInSecond );
0
Gautam Rai

zeitunterschied zwischen jetzt und 10 Minuten später mit Momentjs

let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');

let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;
0
Surya Singh