Страница 1 из 1
timeBetween
Добавлено: Пн сен 10, 2018 10:25 am
Step40
Добрый день
Помогите пожалуйста человеку который только 6 часов назад стал учить php. Но я талантливый освою. Кое что уже получается но тут застрял.
Мне надо сделать что бы скрипт которые читает новости (rrs модуль) читал их только в интервале времени с 08:00 до 14:00
самым своим достойным местом чувствую что надо использовать функцию timeBetween
Но ни фига не соображу как ее использовать
$timeNow = time(); //Тут понятно переменная получает текущее время
А как проверить что переменная входит диапазон определенный timeBetween?
timeBetween("08:00", "12:00");
Буду сильно благодарен за помощь, все мы когда то начинали, зато я спец по интернет рекламе.
Re: timeBetween
Добавлено: Пн сен 10, 2018 10:58 am
skysilver
Ничего не нужно дополнительно получать. timeBetween() сама возьмет текущее время, сравнит его с указанным диапазонов и выдаст true или false.
Код: Выделить всё
if (timeBetween("08:00", "12:00")) {
say('Время между 8 и 12 часами');
} else {
say('Другое время');
}
Re: timeBetween
Добавлено: Вт сен 18, 2018 3:19 pm
Step40
Добрый день решил не плодить новую тему спрошу тут
наткнулся на такое свойство ThisComputer.testProp
Не подскажите что его использует?
Re: timeBetween
Добавлено: Вт сен 18, 2018 3:26 pm
skysilver
Step40 писал(а): ↑Вт сен 18, 2018 3:19 pm
Добрый день решил не плодить новую тему спрошу тут
наткнулся на такое свойство ThisComputer.testProp
Не подскажите что его использует?
Вбей в поиск в админке. Если ничего не найдет, то можешь удалить. А если найдет, что сразу видно будет, что использует.
Re: timeBetween
Добавлено: Сб апр 27, 2019 1:59 am
Strangeman
Вдруг кому пригодится. timeBetween('23:00','01:00') работает корректно, т.е. переход через 0:00 не проблема.
Re: timeBetween
Добавлено: Ср мар 11, 2020 3:10 pm
Kapico
Добрый день.
Есть сценарий, который включает или выключает простое устройство (лампа по mqtt) два раза в день в определенные периоды:
Код: Выделить всё
if (timeBetween('06:10', getGlobal('ThisComputer'.'.'.'SunRiseTime')) || timeBetween(getGlobal('ThisComputer'.'.'.'SunSetTime'), '22:00')) {
callMethod("Relay01.turnOn");
} else {
callMethod("Relay01.turnOff");
}
На пробных коротких периодах сценарий работает без замечаний. Проблема в том, что при первом запуске с указанными границами вечерний период отрабатывается хорошо - устройство включается и выключается. Но дальше идет сбой - ночью сценарий включает устройство и весь день дает команду на включение. Вечером сценарий выключает устройство в 22:00, а ночью опять включает. Через запись в логи выяснилось в 00:00 сценарий начинает упорно включать устройство и посылает команду на выключение только в 22:00. В чем подвох? Самое обидно, что на предыдущей установке MajorDoMo сценарий работал без проблем.
Re: timeBetween
Добавлено: Ср мар 11, 2020 10:00 pm
xor
Kapico писал(а):Добрый день.
Есть сценарий, который включает или выключает простое устройство (лампа по mqtt) два раза в день в определенные периоды:
Код: Выделить всё
if (timeBetween('06:10', getGlobal('ThisComputer'.'.'.'SunRiseTime')) || timeBetween(getGlobal('ThisComputer'.'.'.'SunSetTime'), '22:00')) {
callMethod("Relay01.turnOn");
} else {
callMethod("Relay01.turnOff");
}
На пробных коротких периодах сценарий работает без замечаний. Проблема в том, что при первом запуске с указанными границами вечерний период отрабатывается хорошо - устройство включается и выключается. Но дальше идет сбой - ночью сценарий включает устройство и весь день дает команду на включение. Вечером сценарий выключает устройство в 22:00, а ночью опять включает. Через запись в логи выяснилось в 00:00 сценарий начинает упорно включать устройство и посылает команду на выключение только в 22:00. В чем подвох? Самое обидно, что на предыдущей установке MajorDoMo сценарий работал без проблем.
Похоже, что в полночь во время заката прописывается 0:0 и это шурует до 22 вечера. Попробуйте заменить на константы ваш закат/рассвет для временного использования. А в это время поразбирайтесь, когда и как у вас закат/рассвет формируются. Есть альтернатива вашему скрипту. Там, где вычисляются закат/рассвет можно сразу и создать 4 шедуледджоба на включение по времени и выключение
Отправлено с моего Redmi 4X через Tapatalk
Re: timeBetween
Добавлено: Пт мар 13, 2020 11:15 am
Kapico
Спасибо за наводку, дело было в значениях рассвета/заката. Значения брались с сайта, и брались нормально, только с секундами, например '19:46:25'. А как показало исследование, функция timeBetween работает с использованием функции timeConvert, которая в свою очередь выцарапывает из строки только часы и минуты. Таким образом, параметр с секундами не возвращал значения функции вообще и, следовательно, условия плясали от пустого значения. Взял данные с другого сайта без секунд и все работает.
За наводку на скрипт спасибо, позже посмотрю.
Re: timeBetween
Добавлено: Пт мар 13, 2020 11:39 pm
xor
Kapico писал(а): ↑Пт мар 13, 2020 11:15 am
Спасибо за наводку, дело было в значениях рассвета/заката. Значения брались с сайта, и брались нормально, только с секундами, например '19:46:25'. А как показало исследование, функция timeBetween работает с использованием функции timeConvert, которая в свою очередь выцарапывает из строки только часы и минуты. Таким образом, параметр с секундами не возвращал значения функции вообще и, следовательно, условия плясали от пустого значения. Взял данные с другого сайта без секунд и все работает.
За наводку на скрипт спасибо, позже посмотрю.
вы ещё берёте восход/закат с внешнего сайта?((
проще рассчитывать их локально же!
скрипт типа (или на форуме посмотреть date_sun_info)
Код: Выделить всё
//$lat=gg('ThisComputer.latitude'); // широта
//$long=gg('ThisComputer.longitude'); // долгота
$lat=55.4734;
$long= 37.7848;
$sun_info = date_sun_info(time(), $lat, $long);
//print_r($sun_info);
$sunrise = $sun_info['sunrise'];
echo 'Восход: '.date("H:i", $sunrise).'<br>';
sg('weather_my.SunRise',date("H:i", $sunrise));
$sunset = $sun_info['sunset'];
$day_length = $sunset - $sunrise;
echo 'Заход: '.date("H:i", $sunset).'<br>';
echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
sg('weather_my.SunSet',date("H:i", $sunset));
sg('weather_my.LongTag',gmdate("H:i", $day_length));
echo 'В зените: '.date("H:i", $sun_info['transit']).'<br>';
sg('weather_my.Transit',date("H:i", $sun_info['transit']));
$civil_twilight_begin = $sun_info['civil_twilight_begin'];
echo 'Начало утренних сумерек: '.date("H:i", $civil_twilight_begin).'<br>';
sg('weather_my.civil_begin',date("H:i", $civil_twilight_begin));
$civil_twilight_end = $sun_info['civil_twilight_end'];
echo 'Конец вечерних сумерек: '.date("H:i", $civil_twilight_end).'<br>';
sg('weather_my.civil_end',date("H:i", $civil_twilight_end));
//учтём сезон
$month_num = (int)date('m');
if($month_num>4 && $month_num<10){
$season = -1;
$sunrise = $civil_twilight_begin;//для лета утренние сумерки
}else{
$season = 1;
}