web-dev-qa-db-fra.com

Combien de secondes entre deux dates?

J'ai donc deux dates YYYY-MM-DD et ZZZZ-NN-EE

Comment puis-je savoir combien de secondes il y a entre eux?

160
steven

Je prends YYYY & ZZZZ pour signifier des valeurs entières qui désignent l'année, MM & NN pour signifier des valeurs entières signifiant le mois de l'année et DD & EE sous forme d'entiers désignant le jour du mois.

var t1 = new Date(YYYY, MM, DD, 0, 0, 0, 0);
var t2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0);
var dif = t1.getTime() - t2.getTime();

var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);

Une source pratique pour référence future est le site MDN

Alternativement, si vos dates sont dans un format javascript peut analyser

var dif = Date.parse(MM + " " + DD + ", " + YYYY) - Date.parse(NN + " " + EE + ", " + ZZZZ);

et alors vous pouvez utiliser cette valeur comme différence en millisecondes (dif dans les deux exemples a la même signification)

217
Martin

Il suffit de soustraire:

var a = new Date();
alert("Wait a few seconds, then click OK");

var b = new Date();
var difference = (b - a) / 1000;

alert("You waited: " + difference + " seconds");
74
Seth

Si l'une de vos dates ou les deux sont à venir, j'ai bien peur que vous soyez SOL si vous voulez une précision à la seconde près. Le temps UTC a des secondes intercalaires qui ne sont pas connues jusqu'à environ 6 mois avant, ce qui fait que les dates plus éloignées peuvent être imprécises de quelques secondes (et en pratique, étant donné que les utilisateurs ne mettent pas à jour leurs machines plus souvent, vous peut trouver que tout moment dans le futur est décalé de quelques secondes).

Cela donne une bonne explication de la théorie de la conception de bibliothèques de date/heure et explique pourquoi: http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details .html # date_time.tradeoffs

14
rmeador

Vous pouvez le faire simplement.

var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
6
user5945979

créez deux objets Date et appelez valueOf() sur les deux, puis comparez-les.

Référence d'objet JavaScript Date

5
Jacob Relkin
var a = new Date("2010 jan 10"),
    b = new Date("2010 jan 9");

alert(
    a + "\n" + 
    b + "\n" +
    "Difference: " + ((+a - +b) / 1000)
);
4
Justin Johnson