¿Cómo encontrar la diferencia entre dos fechas?Diferencia entre fechas en JavaScript
Respuesta
Al utilizar el valor Date objeto y sus milisegundos, las diferencias se puede calcular:
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.
usted puede obtener el número de segundos (como un número entero/conjunto) dividiendo los milisegundos por 1000 para convertirlo a segundos después convertir el resultado a un número entero (esto elimina la parte fraccionaria que representa los milisegundos):
var seconds = parseInt((b-a)/1000);
a continuación, podría obtener toda minutes
dividiendo seconds
por 60 y convirtiéndolo en un número entero, luego hours
dividiendo minutes
por 60 y convirtiéndolo a un número entero, luego unidades de mayor tiempo de la misma manera. A partir de esto, una función para obtener la máxima cantidad entera de una unidad de tiempo en el valor de una unidad inferior y la unidad inferior restante puede ser creado:
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 qué los parámetros de entrada proporcionados anteriormente para la segunda Date object son, ver sus nombres a continuación:
new Date(<year>, <month>, <day>, <hours>, <minutes>, <seconds>, <milliseconds>);
Como se señaló en los comentarios de esta solución, que no necesariamente tiene que proporcionar todos estos valores a menos que sean necesarios para la fecha que desea representar.
No necesita llamar al constructor 'Fecha' con todos los argumentos, puede llamarlo solo con Año y Mes, los otros argumentos son opcionales. – CMS
Gracias, CMS. Quería asegurarme de que el usuario entendiera que pueden ser muy granulares con sus especificaciones. – Sampson
He actualizado la solución para comunicar su punto, CMS. Aprecio el heads-up. – Sampson
Use DateJs.
Herramienta de cuchilla suiza para programar la fecha y hora de Javascript.
// 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');
}
He encontrado esto y funciona bien para mí:
Calcular la diferencia entre dos fechas conocidas
Por desgracia, el cálculo de 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 Fecha juntos. Para usar un objeto Date en cualquier tipo de cálculo, primero debemos recuperar el valor de milisegundos interno de Date, que se almacena como un entero grande. La función para hacer eso es Date.getTime(). Una vez que ambas Fechas se han convertido, restando la última de la anterior devuelve la diferencia en milisegundos. El intervalo deseado puede determinarse dividiendo ese número por el número correspondiente de milisegundos. Por ejemplo, para obtener el número de días para un número dado de milisegundos, tendríamos dividir por 86400000, el número de milisegundos en 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 el redondeo es opcional, dependiendo de si desea días parciales o no.
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf())
dat.setDate(dat.getDate() + days);
return dat;
}
function getDates(startDate, stopDate) {
var dateArray = new Array();
var currentDate = startDate;
while (currentDate <= stopDate) {
dateArray.push(currentDate);
currentDate = currentDate.addDays(1);
}
return dateArray;
}
var dateArray = getDates(new Date(), (new Date().addDays(7)));
for (i = 0; i < dateArray.length; i ++) {
// alert (dateArray[i]);
date=('0'+dateArray[i].getDate()).slice(-2);
month=('0' +(dateArray[i].getMonth()+1)).slice(-2);
year=dateArray[i].getFullYear();
alert(date+"-"+month+"-"+year);
}
Si está buscando una diferencia expresada como una combinación de años, meses y días, sugeriría esta función:
function interval(date1, date2) {
if (date1 > date2) { // swap
var result = interval(date2, date1);
result.years = -result.years;
result.months = -result.months;
result.days = -result.days;
result.hours = -result.hours;
return result;
}
result = {
years: date2.getYear() - date1.getYear(),
months: date2.getMonth() - date1.getMonth(),
days: date2.getDate() - date1.getDate(),
hours: date2.getHours() - date1.getHours()
};
if (result.hours < 0) {
result.days--;
result.hours += 24;
}
if (result.days < 0) {
result.months--;
// days = days left in date1's month,
// plus days that have passed in date2's month
var copy1 = new Date(date1.getTime());
copy1.setDate(32);
result.days = 32-date1.getDate()-copy1.getDate()+date2.getDate();
}
if (result.months < 0) {
result.years--;
result.months+=12;
}
return result;
}
// Be aware that the month argument is zero-based (January = 0)
var date1 = new Date(2015, 4-1, 6);
var date2 = new Date(2015, 5-1, 9);
document.write(JSON.stringify(interval(date1, date2)));
Esta solución tratará los años bisiestos (29 de febrero) y las diferencias en la duración del mes de una manera que haríamos naturalmente (creo).
Por ejemplo, el intervalo entre el 28 de febrero de 2015 y el 28 de marzo de 2015 se considerará exactamente un mes, no 28 días. Si ambos días son en 2016, la diferencia seguirá siendo exactamente un mes, no 29 días.
Las fechas con exactamente el mismo mes y día, pero cada año diferente, siempre tendrán una diferencia de un número exacto de años. Entonces la diferencia entre 2015-03-01 y 2016-03-01 será exactamente 1 año, no 1 año y 1 día (debido a contar 365 días como 1 año).
var DateDiff = function(type, start, end) {
let // or var
years = end.getFullYear() - start.getFullYear(),
monthsStart = start.getMonth(),
monthsEnd = end.getMonth()
;
var returns = -1;
switch(type){
case 'm': case 'mm': case 'month': case 'months':
returns = (((years * 12) - (12 - monthsEnd)) + (12 - monthsStart));
break;
case 'y': case 'yy': case 'year': case 'years':
returns = years;
break;
case 'd': case 'dd': case 'day': case 'days':
returns = ((end - start)/(1000 * 60 * 60 * 24));
break;
}
return returns;
}
de uso
qtMonths var = DateDiff ('mm', nueva fecha ('05/05/2015'), nuevos Fecha());
var qtYears = DateDiff ('yy', nueva fecha ('2015-05-05'), nueva fecha());
var qtDays = DateDiff ('dd', nueva fecha ('2015-05-05'), nueva fecha());
O
qtMonths var = DateDiff ('m', nueva fecha ('05/05/2015'), nuevos Fecha()); // m || y || d
var qtMonths = DateDiff ('mes', nueva fecha ('2015-05-05'), nueva fecha()); // mes || año || día
var qtMonths = DateDiff ('meses', nueva fecha ('2015-05-05'), nueva fecha()); // meses || años ||
días...
var DateDiff = function (type, start, end) {
let // or var
years = end.getFullYear() - start.getFullYear(),
monthsStart = start.getMonth(),
monthsEnd = end.getMonth()
;
if(['m', 'mm', 'month', 'months'].includes(type)/*ES6*/)
return (((years * 12) - (12 - monthsEnd)) + (12 - monthsStart));
else if(['y', 'yy', 'year', 'years'].includes(type))
return years;
else if (['d', 'dd', 'day', 'days'].indexOf(type) !== -1/*EARLIER JAVASCRIPT VERSIONS*/)
return ((end - start)/(1000 * 60 * 60 * 24));
else
return -1;
}
- 1. ¿Cómo obtengo la diferencia entre dos fechas en JavaScript?
- 2. C# - ¿Diferencia entre dos fechas?
- 3. ¿Cómo puedo encontrar la diferencia entre dos fechas usando Javascript
- 4. calcular la diferencia entre dos fechas
- 5. Diferencia entre dos fechas en MySQL
- 6. Android diferencia entre dos fechas en segundos
- 7. Diferencia entre dos fechas en Python
- 8. Diferencia entre 2 fechas en SQLite
- 9. Diferencia entre fechas en dos filas consecutivas
- 10. Diferencia, en minutos, entre dos fechas
- 11. Diferencia de días entre dos fechas
- 12. bucle Javascript entre intervalos de fechas
- 13. Diferencia en el tiempo entre dos fechas en Java
- 14. ¿Cómo encuentro la diferencia horaria entre dos fechas en PHP?
- 15. Calcula la diferencia entre dos fechas en PHP
- 16. Cómo encontrar la diferencia entre las fechas en VBA
- 17. Encontrar la diferencia entre 2 fechas en xslt
- 18. Cómo obtener la diferencia horaria (en horas) entre 2 fechas
- 19. encuentra la diferencia entre dos fechas en segundos
- 20. Diferencia entre 2 fechas en cuestión de segundos
- 21. Calcular la diferencia entre dos fechas en MySQL
- 22. ¿Cómo verifico la diferencia, en segundos, entre dos fechas?
- 23. ¿Diferencia entre 2 fechas y horas en horas?
- 24. Seleccione la diferencia entre las fechas de fila en MySQL
- 25. Diferencia entre Javascript y PHP
- 26. Convertir fechas en JavaScript
- 27. ¿Cómo obtener la diferencia entre dos fechas redondeadas a horas
- 28. ¿Cómo puedo obtener la diferencia entre dos fechas bajo bash
- 29. Ruby, Rails y la diferencia entre dos fechas
- 30. funcionan a cabo minutos de diferencia entre las fechas
duplicado posible de [Comparar dos fechas con JavaScript] (https://stackoverflow.com/questions/492994/compare-two-dates-with-javascript) –