Saltar al contenido

Diferencia entre fechas en JavaScript

Si encuentras algún error con tu código o proyecto, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Solución:

Usando el objeto Fecha y su valor en milisegundos, se pueden calcular las diferencias:

var a = new Date(); // Current date now.
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // Start of 2010.
var d = (b-a); // Difference in milliseconds.

Puede obtener la cantidad de segundos (como un número entero/entero) dividiendo los milisegundos por 1000 para convertirlos en segundos y luego convirtiendo el resultado en un número entero (esto elimina la parte fraccionaria que representa los milisegundos):

var seconds = parseInt((b-a)/1000);

Entonces podrías obtener todo minutes Dividiendo seconds por 60 y convirtiéndolo en un número entero, entonces hours Dividiendo minutes por 60 y convirtiéndolo en un número entero, luego unidades de tiempo más largas de la misma manera. A partir de esto, se puede crear una función para obtener la cantidad total máxima de una unidad de tiempo en el valor de una unidad inferior y la unidad inferior restante:

function get_whole_values(base_value, time_fractions) 
    time_data = [base_value];
    for (i = 0; i < time_fractions.length; i++) 
        time_data.push(parseInt(time_data[i]/time_fractions[i]));
        time_data[i] = time_data[i] % time_fractions[i];
    ; return time_data;
;
// Input parameters below: base value of 72000 milliseconds, time fractions are
// 1000 (amount of milliseconds in a second) and 60 (amount of seconds in a minute). 
console.log(get_whole_values(72000, [1000, 60]));
// -> [0,12,1] # 0 whole milliseconds, 12 whole seconds, 1 whole minute.

Si se pregunta cuáles son los parámetros de entrada proporcionados anteriormente para el segundo objeto Fecha, consulte sus nombres a continuación:

new Date(, , , , , , );

Como se indica en los comentarios de esta solución, no es necesario que proporcione todos estos valores a menos que sean necesarios para la fecha que desea representar.

He encontrado esto y me funciona bien:

Cálculo de la diferencia entre dos fechas conocidas

Desafortunadamente, calcular un intervalo de fechas como días, semanas o meses entre dos fechas conocidas no es tan fácil porque no puede simplemente agregar objetos de Fecha. Para utilizar un objeto Fecha en cualquier tipo de cálculo, primero debemos recuperar el valor de milisegundos interno de Fecha, que se almacena como un número entero grande. La función para hacerlo es Date.getTime(). Una vez que se han convertido ambas fechas, al restar la última de la anterior se obtiene la diferencia en milisegundos. El intervalo deseado se puede determinar dividiendo ese número por el número correspondiente de milisegundos. Por ejemplo, para obtener el número de días de un determinado número de milisegundos, dividiríamos por 86.400.000, el número de milisegundos que tiene un día (1000 x 60 segundos x 60 minutos x 24 horas):

Date.daysBetween = function( date1, date2 ) 
  //Get 1 day in milliseconds
  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 = date2_ms - date1_ms;

  // Convert back to days and return
  return Math.round(difference_ms/one_day); 


//Set the two dates
var y2k  = new Date(2000, 0, 1); 
var Jan1st2010 = new Date(y2k.getFullYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays 726
console.log( 'Days since ' 
           + Jan1st2010.toLocaleDateString() + ': ' 
           + Date.daysBetween(Jan1st2010, today));

El redondeo es opcional, dependiendo de si desea días parciales o no.

Referencia

    // This is for first date
    first = new Date(2010, 03, 08, 15, 30, 10); // Get the first date epoch object
    document.write((first.getTime())/1000); // get the actual epoch values
    second = new Date(2012, 03, 08, 15, 30, 10); // Get the first date epoch object
    document.write((second.getTime())/1000); // get the actual epoch values
    diff= second - first ;
    one_day_epoch = 24*60*60 ;  // calculating one epoch
    if ( diff/ one_day_epoch > 365 ) // check , is it exceei
    
    alert( 'date is exceeding one year');
    

Aquí tienes las reseñas y puntuaciones

Te invitamos a añadir valor a nuestra información participando con tu experiencia en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *