timeBetween
Модератор: immortal
-
- Сообщения: 112
- Зарегистрирован: Сб июл 14, 2018 11:31 am
- Откуда: Волгоград
- Благодарил (а): 90 раз
- Поблагодарили: 7 раз
timeBetween
Добрый день
Помогите пожалуйста человеку который только 6 часов назад стал учить php. Но я талантливый освою. Кое что уже получается но тут застрял.
Мне надо сделать что бы скрипт которые читает новости (rrs модуль) читал их только в интервале времени с 08:00 до 14:00
самым своим достойным местом чувствую что надо использовать функцию timeBetween
Но ни фига не соображу как ее использовать
$timeNow = time(); //Тут понятно переменная получает текущее время
А как проверить что переменная входит диапазон определенный timeBetween?
timeBetween("08:00", "12:00");
Буду сильно благодарен за помощь, все мы когда то начинали, зато я спец по интернет рекламе.
Помогите пожалуйста человеку который только 6 часов назад стал учить php. Но я талантливый освою. Кое что уже получается но тут застрял.
Мне надо сделать что бы скрипт которые читает новости (rrs модуль) читал их только в интервале времени с 08:00 до 14:00
самым своим достойным местом чувствую что надо использовать функцию timeBetween
Но ни фига не соображу как ее использовать
$timeNow = time(); //Тут понятно переменная получает текущее время
А как проверить что переменная входит диапазон определенный timeBetween?
timeBetween("08:00", "12:00");
Буду сильно благодарен за помощь, все мы когда то начинали, зато я спец по интернет рекламе.
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: timeBetween
Ничего не нужно дополнительно получать. timeBetween() сама возьмет текущее время, сравнит его с указанным диапазонов и выдаст true или false.
Код: Выделить всё
if (timeBetween("08:00", "12:00")) {
say('Время между 8 и 12 часами');
} else {
say('Другое время');
}
- Рейтинг: 2.33%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 112
- Зарегистрирован: Сб июл 14, 2018 11:31 am
- Откуда: Волгоград
- Благодарил (а): 90 раз
- Поблагодарили: 7 раз
Re: timeBetween
Добрый день решил не плодить новую тему спрошу тут
наткнулся на такое свойство ThisComputer.testProp
Не подскажите что его использует?
наткнулся на такое свойство ThisComputer.testProp
Не подскажите что его использует?
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: timeBetween
Вбей в поиск в админке. Если ничего не найдет, то можешь удалить. А если найдет, что сразу видно будет, что использует.
- Рейтинг: 2.33%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- Strangeman
- Сообщения: 208
- Зарегистрирован: Ср янв 16, 2013 6:35 pm
- Откуда: Золотарево
- Благодарил (а): 101 раз
- Поблагодарили: 19 раз
- Контактная информация:
Re: timeBetween
Вдруг кому пригодится. timeBetween('23:00','01:00') работает корректно, т.е. переход через 0:00 не проблема.
- За это сообщение автора Strangeman поблагодарил:
- Molostov (Вт май 21, 2019 5:40 pm)
- Рейтинг: 1.16%
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
-
- Сообщения: 5
- Зарегистрирован: Чт фев 13, 2020 4:27 pm
- Благодарил (а): 2 раза
- Поблагодарили: 0
Re: timeBetween
Добрый день.
Есть сценарий, который включает или выключает простое устройство (лампа по mqtt) два раза в день в определенные периоды:
На пробных коротких периодах сценарий работает без замечаний. Проблема в том, что при первом запуске с указанными границами вечерний период отрабатывается хорошо - устройство включается и выключается. Но дальше идет сбой - ночью сценарий включает устройство и весь день дает команду на включение. Вечером сценарий выключает устройство в 22:00, а ночью опять включает. Через запись в логи выяснилось в 00:00 сценарий начинает упорно включать устройство и посылает команду на выключение только в 22:00. В чем подвох? Самое обидно, что на предыдущей установке MajorDoMo сценарий работал без проблем.
Есть сценарий, который включает или выключает простое устройство (лампа по mqtt) два раза в день в определенные периоды:
Код: Выделить всё
if (timeBetween('06:10', getGlobal('ThisComputer'.'.'.'SunRiseTime')) || timeBetween(getGlobal('ThisComputer'.'.'.'SunSetTime'), '22:00')) {
callMethod("Relay01.turnOn");
} else {
callMethod("Relay01.turnOff");
}
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: timeBetween
Похоже, что в полночь во время заката прописывается 0:0 и это шурует до 22 вечера. Попробуйте заменить на константы ваш закат/рассвет для временного использования. А в это время поразбирайтесь, когда и как у вас закат/рассвет формируются. Есть альтернатива вашему скрипту. Там, где вычисляются закат/рассвет можно сразу и создать 4 шедуледджоба на включение по времени и выключениеKapico писал(а):Добрый день.
Есть сценарий, который включает или выключает простое устройство (лампа по mqtt) два раза в день в определенные периоды:На пробных коротких периодах сценарий работает без замечаний. Проблема в том, что при первом запуске с указанными границами вечерний период отрабатывается хорошо - устройство включается и выключается. Но дальше идет сбой - ночью сценарий включает устройство и весь день дает команду на включение. Вечером сценарий выключает устройство в 22:00, а ночью опять включает. Через запись в логи выяснилось в 00:00 сценарий начинает упорно включать устройство и посылает команду на выключение только в 22:00. В чем подвох? Самое обидно, что на предыдущей установке MajorDoMo сценарий работал без проблем.Код: Выделить всё
if (timeBetween('06:10', getGlobal('ThisComputer'.'.'.'SunRiseTime')) || timeBetween(getGlobal('ThisComputer'.'.'.'SunSetTime'), '22:00')) { callMethod("Relay01.turnOn"); } else { callMethod("Relay01.turnOff"); }
Отправлено с моего Redmi 4X через Tapatalk
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 5
- Зарегистрирован: Чт фев 13, 2020 4:27 pm
- Благодарил (а): 2 раза
- Поблагодарили: 0
Re: timeBetween
Спасибо за наводку, дело было в значениях рассвета/заката. Значения брались с сайта, и брались нормально, только с секундами, например '19:46:25'. А как показало исследование, функция timeBetween работает с использованием функции timeConvert, которая в свою очередь выцарапывает из строки только часы и минуты. Таким образом, параметр с секундами не возвращал значения функции вообще и, следовательно, условия плясали от пустого значения. Взял данные с другого сайта без секунд и все работает.
За наводку на скрипт спасибо, позже посмотрю.
За наводку на скрипт спасибо, позже посмотрю.
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: timeBetween
вы ещё берёте восход/закат с внешнего сайта?((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;
}
- Рейтинг: 3.49%
win10 connect https://connect.smartliving.ru/profile/303