Donc j'ai deux dates YYYY-MM-DD
etZZZZ-NN-EE
Comment puis-je savoir combien de secondes il y a entre eux?
Donc j'ai deux dates YYYY-MM-DD
etZZZZ-NN-EE
Comment puis-je savoir combien de secondes il y a entre eux?
yyyy-MM-dd
est clair (année, mois, jour - notez qu'ils ne sont pas tous en majuscules), mais pas ZZZZ-NN-EE. Je l'interprète comme (fuseau horaire, ???, jour de la semaine). Est-ce une semaine en année? Si tel était le cas, cela aurait été ww
. Mais alors, nous avons également besoin de l'année pour calculer la différence. Pouvez-vous s'il vous plaît donner quelques-unes des valeurs d'échantillon réelles?
Réponses:
Je prends YYYY et ZZZZ pour signifier des valeurs entières qui signifient l'année, MM et NN pour signifier des valeurs entières signifiant le mois de l'année et JJ et EE comme des valeurs entières signifiant 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 ensuite vous pouvez utiliser cette valeur comme différence en millisecondes (dif dans mes deux exemples a la même signification)
yyyy
, les mois à 2 chiffres en majuscules MM
et les jours à 2 chiffres en minuscules dd
.
t2
.
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");
a
et b
et assurez-vous qu'il s'agit de dates.
Si l'une de vos dates ou les deux sont dans le futur, j'ai bien peur que vous soyez SOL si vous voulez une précision à la seconde. L'heure UTC a des secondes intercalaires qui ne sont connues que 6 mois environ avant qu'elles ne se produisent, donc toute date plus éloignée que cela peut être inexacte d'un certain nombre de secondes (et en pratique, puisque les gens ne mettent pas à jour leurs machines si souvent, peut trouver que n'importe quel moment dans le futur est décalé d'un certain nombre de secondes).
Cela donne une bonne explication de la théorie de la conception des bibliothèques de date / heure et pourquoi il en est ainsi: http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html#date_time.tradeoffs
Vous pouvez le faire simplement.
var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
créez deux Date
objets et faites appel valueOf()
aux deux, puis comparez-les.
var a = new Date("2010 jan 10"),
b = new Date("2010 jan 9");
alert(
a + "\n" +
b + "\n" +
"Difference: " + ((+a - +b) / 1000)
);
Moyen facile:
function diff_hours(dt2, dt1)
{
var diff =(dt2.getTime() - dt1.getTime()) / 1000;
diff /= (60 * 60);
return Math.abs(Math.round(diff));
}
function diff_minutes(dt2, dt1)
{
var diff =(dt2.getTime() - dt1.getTime()) / 1000;
diff /= (60);
return Math.abs(Math.round(diff));
}
function diff_seconds(dt2, dt1)
{
var diff =(dt2.getTime() - dt1.getTime()) / 1000;
return Math.abs(Math.round(diff));
}
function diff_miliseconds(dt2, dt1)
{
var diff =(dt2.getTime() - dt1.getTime());
return Math.abs(Math.round(diff));
}
dt1 = new Date(2014,10,2);
dt2 = new Date(2014,10,3);
console.log(diff_hours(dt1, dt2));
dt1 = new Date("October 13, 2014 08:11:00");
dt2 = new Date("October 14, 2014 11:13:00");
console.log(diff_hours(dt1, dt2));
console.log(diff_minutes(dt1, dt2));
console.log(diff_seconds(dt1, dt2));
console.log(diff_miliseconds(dt1, dt2));
.Net fournit la classe TimeSpan pour faire le calcul à votre place.
var time1 = new Date(YYYY, MM, DD, 0, 0, 0, 0)
var time2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0)
Dim ts As TimeSpan = time2.Subtract(time1)
ts.TotalSeconds