Этот ответ, основанный на другом ответе (ссылка в конце), касается разницы между двумя датами.
Вы можете увидеть, как это работает, потому что это просто, а также включает деление разницы на
единицы времени (функция, которую я сделал) и преобразование в UTC, чтобы остановить проблемы с часовыми поясами.
function date_units_diff(a, b, unit_amounts) {
var split_to_whole_units = function (milliseconds, unit_amounts) {
// unit_amounts = list/array of amounts of milliseconds in a
// second, seconds in a minute, etc., for example "[1000, 60]".
time_data = [milliseconds];
for (i = 0; i < unit_amounts.length; i++) {
time_data.push(parseInt(time_data[i] / unit_amounts[i]));
time_data[i] = time_data[i] % unit_amounts[i];
}; return time_data.reverse();
}; if (unit_amounts == undefined) {
unit_amounts = [1000, 60, 60, 24];
};
var utc_a = new Date(a.toUTCString());
var utc_b = new Date(b.toUTCString());
var diff = (utc_b - utc_a);
return split_to_whole_units(diff, unit_amounts);
}
// Example of use:
var d = date_units_diff(new Date(2010, 0, 1, 0, 0, 0, 0), new Date()).slice(0,-2);
document.write("In difference: 0 days, 1 hours, 2 minutes.".replace(
/0|1|2/g, function (x) {return String( d[Number(x)] );} ));
Как работает мой код выше
Разница между датой и временем в виде миллисекунд может быть рассчитана с использованием объекта Дата :
var a = new Date(); // Current date now.
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // Start of 2010.
var utc_a = new Date(a.toUTCString());
var utc_b = new Date(b.toUTCString());
var diff = (utc_b - utc_a); // The difference as milliseconds.
Затем, чтобы определить количество секунд в этой разности, разделите его на 1000, чтобы преобразовать
от миллисекунд до секунд, затем измените результат на целое число (целое число), чтобы удалить
миллисекунды (дробная часть этого десятичного числа): var seconds = parseInt(diff/1000)
.
Кроме того, я мог бы получить более длинные единицы времени, используя тот же процесс, например:
- (целое) минут , деление секунд на 60 и изменение результата на целое число,
- часов , деление минут на 60 и изменение результата на целое число.
Я создал функцию для того, чтобы разделить разницу на
целые единицы времени, названные split_to_whole_units
, с этой демонстрацией:
console.log(split_to_whole_units(72000, [1000, 60]));
// -> [1,12,0] # 1 (whole) minute, 12 seconds, 0 milliseconds.
Этот ответ основан на этом другом .