Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.05.2017, 16:53
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Высчитать сколько произошло действий за определённый участок времени
Всем привет!
Возник следуюший вопрос, а так как я далеко не профи, обращаюсь к вам за помощью:
- у меня есть такой массив
tempTime[i].Start ([objectObjekt][objectObjekt][objectObjekt][objectObjekt][objectObjekt][objectObjekt][objectObjekt][objectObjekt]....)
из которго я получаю время в миллисекундах и успешно перевожу в часы, минуты и секунды и получаю timeString.
Соотвествено есть и tempTime[i].Stop
Теперь, а с этого момента я запутался чуток, мне надо сложить всё полученное время и разбить на 15 ти-минутные блоки. Или брать вот так:
var interval = (((tempTime[i].Start / 3600000) / 60000 + 15) - tempTime[i].Start);


где я получу свои 15ть минут... но тогда мне надо узнать когда у меня заканчивается время и сколько будет остаток...

Короче, для чего это надо:
У меня есть функция селектирования по дате и времени, которая выдаёт мне кучу цифр. Теперь мне надо это как-то упорядочить, сложить сколько действий произошло в периуд 15ти минут и позже это в биюлиотеку jquery.flot.js забить

Пока писал уже идея по другому решается:
var stop = new Date(tempTime[i].Stop);
					var time = (stop - tempTime[i].Start);//отрезки времени
					
					/*var h = Math.floor(time / 3600000);
                    var m = Math.floor((time - (h * 3600000)) / 60000);
                    var s = (time - (h * 3600000) - (m * 60000)) / 1000;*/ это пока тут не надо
					
					var interval = 15;//определяем интревал времени
					
					//timeStamp = h + ":" + m + ":" + s;
					
                    for (i = time; i <= interval; i++) { //и начинаем складывать
                        и тут как-то показать i сколько раз она отстучала за интревал 15ти минут
                    }
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2017, 19:06
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

"Что-то" есть, "что-то" нужно получить...
Я это именно так понял.
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2017, 11:35
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

если честно я сам запутался))) попробую дурими словами...
Например берём промежуток времени в один (два, три, четыре) час. За это время у меня сердце стукнулу 300 раз. Но стучало оно не развномерно, а когда я бежал быстрее и соотвественно когда спал медленее. Так вот мне надо разбить это время на 15ти минутные промежутки и узнать сколько раз за эти 15ть минут стукнуло сердце. Как-то вот так...
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2017, 11:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

SaM1001, а какие данные есть?
Идеально было бы иметь массив с метками времени в миллисекундах каждого из ударов сердца.
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2017, 12:12
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Так массив и присутсвует, и даже в миллисекундах. Это видно по коду выше, где я перевожу всё в человекопонятное время. Я уже выдаю лист с поочерёдностью ударов от 0 до последнего стука, теперь мне просто надо выдать 15ти минутные интервалы. Вот этот кусочек кода ещё раз:

var stop = new Date(tempTime[i].Stop);
					var time = (stop - tempTime[i].Start);
					
					/*var h = Math.floor(time / 3600000);
                    var m = Math.floor((time - (h * 3600000)) / 60000);
                    var s = (time - (h * 3600000) - (m * 60000)) / 1000;
					if (m < 10)
                            m = "0" + m;
                        if (Math.round(s) < 10)
                            s = "0" + s.toFixed(0);
                        else s = s.toFixed(0);
                        dauerString = h + ":" + m + ":" + s + " " + ClockData.Test;*/ это пока тут не надо
					
					var interval = 15;//определяем интревал времени
					
                    for (i = time; i <= interval; i++) { //и начинаем складывать
                        и тут как-то показать i сколько раз она отстучала за интревал 15ти минут 
                    }

					t += "<td>" + (tempTime.length - (cnt - 1)) + "</td>";                    
                    t += "<td>" + start.getDate() + "." + (start.getMonth() + 1) + "." + start.getFullYear() + " " + addZero(start.getHours()) + ":" + addZero(start.getMinutes()) + ":" + addZero(start.getSeconds()) + "</td>";
                    t += "<td>" + dauerString + "</td>";


Массив вот в этом месте
tempTime[i].Start
тут все удары и продолжительность удара:

8     15.5.2017 10:03:28      0:00:09 h 
7     15.5.2017 10:03:13      0:00:12 h 
6     15.5.2017 10:02:18      0:00:11 h 
5     15.5.2017 10:02:03      0:00:11 h 
4     15.5.2017 10:01:31      0:00:18 h 
3     15.5.2017 10:00:52      0:00:18 h 
2     15.5.2017 10:00:33      0:00:14 h 
1     15.5.2017 10:00:19      0:00:09 h


Выглядит всё это вот так. Есть идея как сделать? A то у самого не получается ничего(

Последний раз редактировалось SaM1001, 15.05.2017 в 13:42.
Ответить с цитированием
  #6 (permalink)  
Старый 15.05.2017, 14:02
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

SaM1001, Это не решение твоей задачи, но принцип, думаю, будет понятен.

var timestamps=[1494843562],i=0
for(i=0;i<9;i++)
	timestamps.push(timestamps[timestamps.length-1]-(Math.floor(Math.random()*(60*60-5*60+1))+5*60));
	
timestamps=timestamps.sort();
var response={},
	start=timestamps[0],
	end=start+15*60,
	point;
	
for(i=0;i<timestamps.length;i++){
	point=timestamps[i];
	
	if(point<start || point>end){
		start=point;
		end=start+15*60;
	};
	
	if(!response[start+'-'+end])
		response[start+'-'+end]=[];
	
	response[start+'-'+end].push(point);
}

console.log(response);
Ответить с цитированием
  #7 (permalink)  
Старый 15.05.2017, 14:32
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Nexus, дружище, спасибо огромное, проблему оно не решает, но даёт пищу для размышления! Я ведь хочу сам научиться писать код! Спасибо ещё раз!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сколько прошло времени с заданного момента FreeZon Общие вопросы Javascript 14 05.05.2017 15:18
Как узнать сколько времени прошло? Black_Star jQuery 10 23.04.2017 20:44
Сколько прошло времени от начала отсчета? xmlns Общие вопросы Javascript 6 23.02.2015 14:30
Сколько у Вас есть свободного времени на работе? Duda.Ml1986@gmail.com Оффтопик 37 22.02.2012 11:56
Сколько времени нужно одному типу, чтобы написать движок форума? Alex455 Оффтопик 17 22.05.2011 11:14