2012-04-19 24 views
6

Quiero que los días de escariado pasen a una fecha determinada, así que estoy tratando de detectar una fecha en particular con la fecha actual. pero esto no trabaja aquí es mi code Si la fecha es el próximo mes 27 días ¿Cómo puedo conseguir que quedan para ir¿Cómo puedo encontrar la diferencia entre dos fechas usando Javascript

var date2=new Date(); 
    var date1=27/5/2012; 
    var diff = date1.getDate()-date2.getDate(); 
    var date_reaming = diff.getDate(); 
    document.write(date_reaming + 'days to go'); 
+0

duplicado Posible de: http: // stackoverflow. com/questions/542938/how-do-i-get-the-number-of-days-between-two-dates-in-jquery – billyonecan

Respuesta

3

Aquí está la respuesta, he encontrado esto desde here mi js-violín es here

var d = new Date(); 
var curr_date = d.getDate(); 
var curr_month = d.getMonth();/* Returns the month (from 0-11) */ 
var curr_month_plus= curr_month+1; /* because if the month is 4 it will show output 3 so we have to add +1 with month*/ 
var curr_year = d.getFullYear(); 
function dstrToUTC(ds) { 
    var dsarr = ds.split("/"); 
    var mm = parseInt(dsarr[0],10); 
    var dd = parseInt(dsarr[1],10); 
    var yy = parseInt(dsarr[2],10); 
    return Date.UTC(yy,mm-1,dd,0,0,0); } 
    function datediff(ds1,ds2) { 
    var d1 = dstrToUTC(ds1); 
    var d2 = dstrToUTC(ds2); 
    var oneday = 86400000; 
    return (d2-d1)/oneday; } 
    var a =curr_month_plus+ '/' + curr_date + '/' + curr_year; 
    var b; 
    b = "5/26/2012"; 
    document.write(+datediff(a,b)+" day(s)<br>"); 
4

jQuery no se ha incorporado en las funciones de gestión de la fecha. Pruebe con: http://momentjs.com/

14

Su código

date1=27/5/2012 

realmente significa 27 dividido por 5 dividido por 2012. Es equivalente a escribir

date1 = 0.0026838966202783303 

fecha1 será un número, y este número no tiene getDate método.

Si se les declara como fecha real de objetos en lugar

var date2 = new Date(2012, 3, 19); 
var date1 = new Date(2012, 4, 27); 

Usted sería capaz de realizar

var diff = date1 - date2; 

Esto le daría la diferencia en milisegundos entre las dos fechas.

A partir de aquí, se podría calcular el número de días de este modo:

var days = diff/1000/60/60/24; 
8
function getDateDiff(date1, date2, interval) { 
    var second = 1000, 
    minute = second * 60, 
    hour = minute * 60, 
    day = hour * 24, 
    week = day * 7; 
    date1 = new Date(date1).getTime(); 
    date2 = (date2 == 'now') ? new Date().getTime() : new Date(date2).getTime(); 
    var timediff = date2 - date1; 
    if (isNaN(timediff)) return NaN; 
    switch (interval) { 
    case "years": 
     return date2.getFullYear() - date1.getFullYear(); 
    case "months": 
     return ((date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth())); 
    case "weeks": 
     return Math.floor(timediff/week); 
    case "days": 
     return Math.floor(timediff/day); 
    case "hours": 
     return Math.floor(timediff/hour); 
    case "minutes": 
     return Math.floor(timediff/minute); 
    case "seconds": 
     return Math.floor(timediff/second); 
    default: 
     return undefined; 
    } 
} 

console.log(getDateDiff('19/04/2012', '27/5/2012', 'days')); 
2

favor entienda lo que se hace para jQuery.

jQuery es una biblioteca de JavaScript rápida y concisa que simplifica documento HTML que atraviesa, control de eventos, animación, y interacciones Ajax para el desarrollo web rápida.

que desea utilizar básica Javacript o como Juan G. Hurtado afirma otra biblioteca como momentjs.

3

Creo que se puede restar:

var date2 = new Date(2012, 3, 19); // 1st argument = year, 2nd = month - 1 (because getMonth() return 0-11 not 1-12), 3rd = date 
var date1 = new Date(2012, 4, 27); 
var distance = date1.getTime() - date2.getTime(); 
distance = Math.ceil(distance/1000/60/60/24); // convert milliseconds to days. ceil to round up. 
document.write(distance); 
Cuestiones relacionadas