Как вычислить среднее значение между двумя временными метками
Имеется два времени, нужно узнать усредненное значение времени. Как это делается?
t1 = '16:46'; t2 = '17:04'; |
Часы сложить с часами и разделить на 2, минуты с минутами и разделить на 2
правильно думаю? |
Преобразовать шестидесятеричную запись в число, провести вычисления и преобразовать обратно.
|
okuznetsov1,
время всегда в течении одних суток? |
Сделал так:
16*60 + 46 = 1006 мин 17*60 + 04 = 1024 мин (1024 + 1006)/2 * 60 = 60900 секунд var seconds=60900; new Date(seconds*1000).toUTCString().split(/ /)[4]; "16:55:00" Но хотелось бы через moment.js реализовать? |
Цитата:
|
var t1 = "16:46", t2 = "17:04"; alert( getAverage(t1, t2) ); function addZero(a) { a += ""; return a.length === 1 ? 0 + a : a; } function toMinutes(a) { a = a.split(":"); return a[0] * 60 + +a[1]; } function fromMinutes(a) { return addZero(~~(a / 60)) + ":" + addZero(a % 60); } function getAverage(a, b) { return fromMinutes( (toMinutes(a) + toMinutes(b)) / 2 ); } |
А вот реализовал и через moment.js:
moment.utc(60900*1000).format("HH:mm") |
okuznetsov1,
вариант тотже что у вас, но точность ниже до минут только. var t1 = '16:46', t2 = '17:04'; function fn(a,b) { a = a.split(":"); b = b.split(":"); a = a[0] * 60 + a[1] * 1; b = b[0] * 60 + b[1] * 1; a += (b - a)/2; return [a/60|0,a%60|0].join(":") } alert(fn(t1,t2)); |
рони,
var t1 = '06:00', t2 = '06:10'; function fn(a,b) { a = a.split(":"); b = b.split(":"); a = a[0] * 60 + a[1] * 1; b = b[0] * 60 + b[1] * 1; a += (b - a)/2; return [a/60|0,a%60|0].join(":") } alert(fn(t1,t2)); |
Часовой пояс GMT +3, время: 15:44. |