2010-10-15 5 views

Répondre

2

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) 

} 
+0

Mais mon' date2' est en fait une chaîne comme '2010-11-9'. – ollydbg

0

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()); 
+0

Oui, mais vous pouvez avoir une différence de 1 jour avec la vraie différence ... – romaintaz

+0

Non, je ne veux pas prendre soin des heures, seulement des jours. – ollydbg

+0

Eh bien alors couper la partie fractionnaire du résultat. – Pointy

0
Math.abs(new Date() - Date.parse("Nov 9, 2010"))/(60*60*24)/1000 

retours:

24.786491909722223 
0
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().

Questions connexes