Помагите пожалуйста скрипт со временем
Люди выручите пожалуйста
вот у меня есть список с Временем : 6:00, 7:30, 8:30, 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 21:30 на ПК время например сейчас 13.34 как сделать чтоб он посмотрел время на пк и вывел из "списка с временем" время близкое к временю с ПК. два времени назад и два времени вперёд ВОт например: время 13.34(ПК) и он мне должен вывести из списка со временем 12.00 13.00 и 14.00 15.00 //вот скрипт чтоб показывалось время с пк var forTime = new Date(); var year =forTime.getFullYear(); var hour = forTime.getHours(); var minutes = forTime.getMinutes(); А как дальше написать код чтоб это показывалось как задумано мной?? помогите плз |
не буду писать код, но шустреньки алгоритм получится как мне кажется если список держать в массиве изначально знать что для первого элемента будет 6 часов и соответственно это будет наша начальный сдвиг
после узнаем какой сейчас час отнимаем от него начальный сдвиг и с полученного индекса берем элемент массива + следующий элеменет ну соответсвенно проверки на крайние элементы |
напишите пожалуйста КОД а то всё равно маленько не понимаю
mullih Спасбо за инфу |
Sejmon,
:cray: var time = "6:00 7:30 8:30 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 21:30".split(" "), out = [], forTime = (new Date()).getHours()+":"+(new Date()).getMinutes(); for (var i=0; i<time.length; i++) { if (+time[i].replace(":","")>+forTime.replace(":","")) {for (var k=i-2; k<i+2; k++) { time[k] && out.push(time[k]) };break} } alert(forTime+"=>"+out); |
Цитата:
а как вывести на странице? document.write(какая переменная здесь должна быть?) |
alert(forTime+"=>"+out); => document.write(forTime+"=>"+out);
|
рони, лучше всё же через parseInt():
var time = "6:00 7:30 8:30 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 21:30".split(" "), out = [], forTime = (new Date()).getHours()+":"+(new Date()).getMinutes(); for(var i = 0; i < time.length; i++) { if(parseInt(time[i]) > parseInt(forTime)) { for(var k = i-2; k < i+2; k++) { out.push(time[k]); } break; } } document.write(forTime+"=>"+out); |
Цитата:
а вот parseInt(17:40) вернёт 17. |
JsLoveR,
Цитата:
Цитата:
|
Вложений: 1
dmitriymar, рони, да, поспешил с выводом) Ошибка как на скрине сбила столку, подумал, что в условии она.
17: 6 => 6:00, 7:30 P.S.: а ошибочка оказалась в том, что не хватает 0, так 17:06, ибо 176 < 600 и 730 |
Цитата:
Спасибо большое!! ещё один вопрос где поставить тег br чтобы каждое время было с новой строки |
document.write(forTime+"=>"+out+"<br />");
|
Sejmon,
document.write(out.join("<br />")); |
Ребят, наверное, не поняли, что я имел ввиду. Например, есть время 12:01, .getMinutes() возвратит в минутах 1, а не 01, получится 12:1, а при парсе - число 121, а должно быть 1201. Нужно сделать проверку на добавление 0 если число в минутах меньше 10.
var time = "6:00 7:30 8:30 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 21:30".split(" "), out = [], mins = (new Date()).getMinutes(), mins = mins < 10 ? mins = "0"+mins : mins, forTime = (new Date()).getHours() +":"+ mins; for(var i=0; i<time.length; i++) { if(+time[i].replace(":","") > +forTime.replace(":","")){ for(var k=i-2; k<i+2; k++) { time[k] && out.push(time[k]) } break; } } document.write(out.join("<br />")); |
JsLoveR,
ок! только добавь проверку if (time[k]) out.push(time[k]) |
не могу понять всё сначало работало потом я изменил чё та не стало работать потом опять всё заного сделал и нечего не работает
вот посмотрите <script type="text/javascript"> var forTime = Date(); var hour = forTime.GetHours(); var minutes = forTime.GetMinutes(); var time = "6:20 6:45 7:00 7:15 7:30 7:51 8:08 8:25 8:42 8:59 9:16 9:33 10:07 10:24 10:41 11:15 11:32 11:49 12:23 12:37 13:14 13:48 14:22 14:39 14:56 15:13 15:30 15:47 16:04 16:21 16:38 16:55 17:12 17:29 17:46 18:03 18:20 18:37 18:54 19:11 19:28 19:45 20:02 20:30 21:05".split(" "), out = [], forTime = (new Date()).getHours()+":"+(new Date()).getMinutes(); for(var i = 0; i < time.length; i++) { if(parseInt(time[i]) > parseInt(forTime)) { for (var k = i - 2; k < i + 2; k++) { out.push(time[k]); } break; } } document.write(out.join("<br />")); </script> |
Sejmon,
GetHours() ???? GetMinutes() ??? - нет такой буквы!!! |
Sejmon, посмотрите выше коммент #14 :-E
var time = "6:00 7:30 8:30 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 21:30".split(" "), out = [], mins = (new Date()).getMinutes(), mins = mins < 10 ? mins = "0"+mins : mins, forTime = (new Date()).getHours() +":"+ mins; for(var i=0; i<time.length; i++) { if(+time[i].replace(":","") > +forTime.replace(":","")){ for(var k=i-2; k<i+2; k++) { time[k] && out.push(time[k]) } break; } } document.write(out.join("<br />")); Используйте этот код, он правильный. Ну и то, что рони указал. |
|
я понял в чём дело всё работает!! нечего невыводилось потомучто на моих часах щас 22.30 и рядом стоящих рядом с этим временем нет! вопрос: как сделать чтобы ночью тогда выводилось самое первое время
|
??????????????????????????????????
|
Часовой пояс GMT +3, время: 13:24. |