Высчитать сколько произошло действий за определённый участок времени
Всем привет!
Возник следуюший вопрос, а так как я далеко не профи, обращаюсь к вам за помощью: - у меня есть такой массив 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ти минут } |
"Что-то" есть, "что-то" нужно получить...
Я это именно так понял. |
если честно я сам запутался))) попробую дурими словами...
Например берём промежуток времени в один (два, три, четыре) час. За это время у меня сердце стукнулу 300 раз. Но стучало оно не развномерно, а когда я бежал быстрее и соотвественно когда спал медленее. Так вот мне надо разбить это время на 15ти минутные промежутки и узнать сколько раз за эти 15ть минут стукнуло сердце. Как-то вот так... |
SaM1001, а какие данные есть?
Идеально было бы иметь массив с метками времени в миллисекундах каждого из ударов сердца. |
Так массив и присутсвует, и даже в миллисекундах. Это видно по коду выше, где я перевожу всё в человекопонятное время. Я уже выдаю лист с поочерёдностью ударов от 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, Это не решение твоей задачи, но принцип, думаю, будет понятен.
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); |
Nexus, дружище, спасибо огромное, проблему оно не решает, но даёт пищу для размышления! Я ведь хочу сам научиться писать код! Спасибо ещё раз!!!
|
Часовой пояс GMT +3, время: 21:27. |