Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вычислить среднее значение между двумя временными метками (https://javascript.ru/forum/misc/68424-kak-vychislit-srednee-znachenie-mezhdu-dvumya-vremennymi-metkami.html)

okuznetsov1 15.04.2017 12:32

Как вычислить среднее значение между двумя временными метками
 
Имеется два времени, нужно узнать усредненное значение времени. Как это делается?

t1 = '16:46';
t2 = '17:04';

okuznetsov1 15.04.2017 12:42

Часы сложить с часами и разделить на 2, минуты с минутами и разделить на 2

правильно думаю?

SV0L0CH 15.04.2017 13:43

Преобразовать шестидесятеричную запись в число, провести вычисления и преобразовать обратно.

рони 15.04.2017 15:07

okuznetsov1,
время всегда в течении одних суток?

okuznetsov1 15.04.2017 15:23

Сделал так:

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 реализовать?

okuznetsov1 15.04.2017 15:24

Цитата:

Сообщение от рони (Сообщение 450081)
okuznetsov1,
время всегда в течении одних суток?

да

exec 15.04.2017 15:33

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 );
}

okuznetsov1 15.04.2017 15:38

А вот реализовал и через moment.js:

moment.utc(60900*1000).format("HH:mm")

рони 15.04.2017 15:42

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));

exec 15.04.2017 15:48

рони,

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, время: 02:24.