Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Алгоритм по определению пары по времени (https://javascript.ru/forum/dom-window/68161-algoritm-po-opredeleniyu-pary-po-vremeni.html)

retvisan 29.03.2017 15:10

Алгоритм по определению пары по времени
 
Приветствую формучане!
Делаю сайт для не ПТУ, а колледжа)
В общем нужно сделать счетчик по определению пары по времени и дня недели по дате. Если со вторым я справился, то второе вызвало большие затруднения.
8:30-10:05-первая пара
10:15-11:50-вторая пара
12:30-14:05-третья пара
14:15-15:50-четвертая пара
15:55-17:30-пятая пара
т.е. пара идет 1:35
если по времени пары нет, то должно быть сказано , что пар нет
помогите чем можете,пример прилагаю ниже
спасибо

retvisan 29.03.2017 15:12

Вложений: 1
вот что я сделал

ksa 29.03.2017 15:23

Цитата:

Сообщение от retvisan
8:30-10:05-первая пара
10:15-11:50-вторая пара
12:30-14:05-третья пара
14:15-15:50-четвертая пара
15:55-17:30-пятая пара

Превратить все это в массив объектов... Написать функцию, которая примет время, пройдет по тому массиву... Если время попадет в некий интервал - вернет номер этого интервала...

retvisan 29.03.2017 15:30

как установить этот интервал? просто если задать просто проход по массиву, то он будет искать совпадение, это нужно прописать в функции? как это сделать?

рони 29.03.2017 15:46

retvisan,
:-?
var arr = [[830,1005],[1015,1150]], num = 930;

function fn(arr,num)
{
  var text = "нет пар или перемена"
  for (var i=0; i<arr.length; i++)  if(arr[i][0]<=num && num <= arr[i][1] ) {text = (i + 1) + " пара"}
  return text

}
alert(fn(arr,num));

ksa 29.03.2017 15:49

Цитата:

Сообщение от retvisan
как установить этот интервал?

Программно...
var arr=[
	{beg: '8:30', end: '10:05'},
	{beg: '10:15', end: '11:50'},
	{beg: '12:30', end: '14:05'},
	{beg: '14:15', end: '15:50'},
	{beg: '15:55', end: '17:30'}
];

Цитата:

Сообщение от retvisan
просто если задать просто проход по массиву, то он будет искать совпадение

Задай не просто... :)
Сравнивай попадание некоего времени в твои интервалы...

retvisan 29.03.2017 16:35

а почему при запуске кода он говорит, что сейчас первая пара?)

ksa 29.03.2017 16:38

Цитата:

Сообщение от retvisan
а почему при запуске кода он говорит, что сейчас первая пара?

Потому, что
Цитата:

Сообщение от рони
num = 930


retvisan 30.03.2017 10:40

т.е. num=930 это по сути продолжительность пары?

рони 30.03.2017 11:22

Цитата:

Сообщение от retvisan
т.е. num=930 это по сути продолжительность пары?

:cray:

пожалуйста включите голову ... это пример ... когда текущее время 9 часов 30 минут ... в это время идёт первая пара.

retvisan 30.03.2017 15:22

var arr = [[830,1005],[1015,1150],[1230,1405],[1415,1550],[1555,1730]], num=now.getHours()+" "+ now.getMinutes()+";


а почему у меня не получается вставить текущее время в переменную num?

retvisan 30.03.2017 15:29

да, я понял, извините

ksa 30.03.2017 15:40

Цитата:

Сообщение от retvisan
а почему у меня не получается вставить текущее время в переменную num?

Ты вообще строку делаешь...

рони 30.03.2017 15:45

retvisan,
var arr = [[830,1005],[1015,1150],[1230,1405],[1415,1550],[1555,1730]],now = new Date(), num= now.getHours()*100 + now.getMinutes();

function fn(arr,num)
{
  var text = "нет пар или перемена"
  for (var i=0; i<arr.length; i++)  if(arr[i][0]<=num && num <= arr[i][1] ) {text = (i + 1) + " пара"; break}
  return text

}
alert(fn(arr,num));

рони 30.03.2017 15:50

Цитата:

Сообщение от ksa
Ты вообще строку делаешь...

точно :) ... пост №15 исправлен

ksa 30.03.2017 16:24

рони, я все думал чего это у тебя за цифири такие. :D
Не похожи ни на количество минут, ни количество секунд с полуночи...
А теперь присмотрелся, там
Цитата:

Сообщение от рони
now.getHours()*100 + now.getMinutes();


retvisan 30.03.2017 16:41

Большое спасибо за помощь!
еще такой момент, не могу вывести значение скрипта через div
var arr = [[830,1005],[1015,1150],[1230,1405],[1415,1550],[1555,1730]],now = new Date(), num=now.getHours()+ ("0"+now.getMinutes()).substr(-2) ;

window.onload = function fn(arr,num)
{
var text = "нет пар или перемена"
for (var i=0; i<arr.length; i++)  if(arr[i][0]<=num && num <= arr[i][1] ) {text = (i + 1) + " пара"; break}
return text
document.getElementById('tetx1').innerHTML = text;
}

</script>
</head>

<body onload="DateTime()">
<body onload="fn(arr,num)">
<div id="text1"  ></div>
<div id="str1"  ></div>

почему не работает? что я сделал не так?

рони 30.03.2017 17:00

retvisan,
бесполезно писать что либо после строки 7, id не совпадает строки 8 и 16.

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
function fn()
{
var arr = [[830,1005],[1015,1150],[1230,1405],[1415,1550],[1555,1730]],now = new Date(), num= now.getHours()*100 + now.getMinutes(),
    text = "нет пар или перемена";
for (var i=0; i<arr.length; i++)  if(arr[i][0]<=num && num <= arr[i][1] ) {text = (i + 1) + " пара"; break}
document.getElementById('text1').innerHTML = text;
}
window.addEventListener('DOMContentLoaded', fn);

  </script>
</head>

<body>
<div id="text1"></div>
</body>
</html>

retvisan 30.03.2017 17:48

Спасибо большое! Вроде разобрался


Часовой пояс GMT +3, время: 00:44.