Supposons que la date spécifiée est 2010-11-9
, comment obtenir la durée par programme?Comment obtenir la durée des jours d'aujourd'hui à une date spécifiée en javascript?
Répondre
Qu'en est-il de here?
function days_between(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24
// Convert both dates to milliseconds
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms)
// Convert back to days and return
return Math.round(difference_ms/ONE_DAY)
}
Ce n'est pas exactement approprié, mais vous pouvez appeler getTime()
d'une instance Date
pour obtenir le nombre de millisecondes depuis l'époque. Soustrayez deux de ceux-ci et divisez par le nombre de millisecondes dans une journée.
Si vous le souhaitez, vous pouvez prendre les remonte au début de leurs jours en réglant explicitement les heures, les minutes et les secondes à zéro:
function startOfDay(d) {
d.setHours(0); d.setMinutes(0); d.setSeconds(0); d.setMilliseconds(0);
return d;
}
var startOfToday = startOfDay(new Date());
Math.abs(new Date() - Date.parse("Nov 9, 2010"))/(60*60*24)/1000
retours:
24.786491909722223
function daysTo(from, to){
// to and from may be
// strings in the form'yyyy-mm-dd' or 'yyyy-m-d'
// split the strings on dashes and possible leading 0,
// to avoid '08' becoming octal '10'
to= to.split(/\-0?/);
to= new Date(+to[0], to[1]-1, +to[2]);
from= from.split(/\-0?/);
from= new Date(+from[0], from[1]-1, +from[2]);
return Math.round((to-from)/86400000));
}
joursPour ('10/09/2010', '10/09/2011') // ou joursPour ('10/09/2010', '10/09/2011')
/* valeur retournée: (Nombre) */
Arrondir le résultat aplanit les compensations d'épargne de lumière du jour.
Si vous créez une nouvelle date sans spécifier d'heure, la date sera définie à minuit, heure locale. En soustrayant les objets de date, vous les convertissez en millisecondes - vous n'avez pas besoin d'utiliser getTime().
Mais mon' date2' est en fait une chaîne comme '2010-11-9'. – ollydbg