Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.
Модератор: immortal
-
IrisKo
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
4 раза
Сообщение
IrisKo » Чт мар 05, 2020 11:21 am
Всем доброго времени суток

Есть цель делать проверку на то выходной завтра или нет и исходя из этого устанавливать время ночного режима. Решила делать это через функции isWeekEnd() isWeekDay(). Они хорошо справляются определяя выходной на текущую дату, а вот как быть с будущим?
Написала следующий код:
Код: Выделить всё
$tt=time()+86400;
if(isWeekEnd($tt)){
sg('ClockChime.TomorrowIsWeekend',1);
}
elseif(isWeekDay($tt)){
sg('ClockChime.TomorrowIsWeekend',0);
}
else
sg('ClockChime.TomorrowIsWeekend',"error");//временно для проверки
но какие бы временные метки я не подставляла вместо переменной $tt хоть 8 марта хоть новый год

код все равно выдает "0". Почему?
-
Logrus
- Сообщения: 2113
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
317 раз
-
Поблагодарили:
466 раз
Сообщение
Logrus » Чт мар 05, 2020 12:02 pm
а зачем для решения этой задачи будущее?
Telegram |
Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с
10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) )))
Спасибо
-
fandaymon
- Сообщения: 1570
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
-
Благодарил (а):
40 раз
-
Поблагодарили:
578 раз
Сообщение
fandaymon » Чт мар 05, 2020 2:40 pm
IrisKo писал(а): ↑Чт мар 05, 2020 11:21 am
Всем доброго времени суток

Есть цель делать проверку на то выходной завтра или нет и исходя из этого устанавливать время ночного режима. Решила делать это через функции isWeekEnd() isWeekDay(). Они хорошо справляются определяя выходной на текущую дату, а вот как быть с будущим?
Написала следующий код:
Код: Выделить всё
$tt=time()+86400;
if(isWeekEnd($tt)){
sg('ClockChime.TomorrowIsWeekend',1);
}
elseif(isWeekDay($tt)){
sg('ClockChime.TomorrowIsWeekend',0);
}
else
sg('ClockChime.TomorrowIsWeekend',"error");//временно для проверки
но какие бы временные метки я не подставляла вместо переменной $tt хоть 8 марта хоть новый год

код все равно выдает "0". Почему?
Потому что это встроенные функции Мажордомо и они не предполагают передачу параметров. Собственно они всего лишь вычисляют номер дня в неделе
Т.е. можно написать так
Код: Выделить всё
$tt=time()+86400;
if (date('w',$tt) == 0 || date('w',$tt) == 6) {
sg('ClockChime.TomorrowIsWeekend',1);
}
else {
sg('ClockChime.TomorrowIsWeekend',0);
}
-
IrisKo
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
4 раза
Сообщение
IrisKo » Чт мар 05, 2020 5:22 pm
То есть они никак не взаимодействуют с модулем "календарь" и все те категории где ставятся галочки что это праздничный или рабочий день в календаре ни на что не влияют? Проблема в том что эти 0 и 6 никак не учитывают что субботы и воскресенья могут быть рабочими, а будни могут быть праздниками. Какой тогда смысл вообще в этой функции...номер дня недели и без нее вычислить не проблема

-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Чт мар 05, 2020 5:38 pm
IrisKo писал(а):То есть они никак не взаимодействуют с модулем "календарь" и все те категории где ставятся галочки что это праздничный или рабочий день в календаре ни на что не влияют? Проблема в том что эти 0 и 6 никак не учитывают что субботы и воскресенья могут быть рабочими, а будни могут быть праздниками. Какой тогда смысл вообще в этой функции...номер дня недели и без нее вычислить не проблема

Есть решение на форуме-альтернатива штатной функции определения рабочего/выходного дня с учётом праздников и переноса выходных. Найдется по Производственный календарь. Я ещё добавляю анализ на отпуск в календаре
Отправлено с моего Redmi 4X через Tapatalk
-
fandaymon
- Сообщения: 1570
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
-
Благодарил (а):
40 раз
-
Поблагодарили:
578 раз
Сообщение
fandaymon » Чт мар 05, 2020 6:16 pm
IrisKo писал(а): ↑Чт мар 05, 2020 5:22 pm
То есть они никак не взаимодействуют с модулем "календарь" и все те категории где ставятся галочки что это праздничный или рабочий день в календаре ни на что не влияют? Проблема в том что эти 0 и 6 никак не учитывают что субботы и воскресенья могут быть рабочими, а будни могут быть праздниками. Какой тогда смысл вообще в этой функции...номер дня недели и без нее вычислить не проблема
Эти функции с календарём никак не связаны, так как модуля Календарь может и не быть в системе. Собственно Праздники и Перенесенные рабочие в календаре не так давно появились, по-моему прошлой осенью мы с Максимом их дописывали. Весь функционал определения рабочий/не рабочий в модуле есть
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Чт мар 05, 2020 6:35 pm
fandaymon писал(а):IrisKo писал(а): ↑Чт мар 05, 2020 5:22 pm
То есть они никак не взаимодействуют с модулем "календарь" и все те категории где ставятся галочки что это праздничный или рабочий день в календаре ни на что не влияют? Проблема в том что эти 0 и 6 никак не учитывают что субботы и воскресенья могут быть рабочими, а будни могут быть праздниками. Какой тогда смысл вообще в этой функции...номер дня недели и без нее вычислить не проблема
Эти функции с календарём никак не связаны, так как модуля Календарь может и не быть в системе. Собственно Праздники и Перенесенные рабочие в календаре не так давно появились, по-моему прошлой осенью мы с Максимом их дописывали. Весь функционал определения рабочий/не рабочий в модуле есть
Перенесённые поправили? А то там какая-то ошибка, вроде, была
Отправлено с моего Redmi 4X через Tapatalk
-
fandaymon
- Сообщения: 1570
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
-
Благодарил (а):
40 раз
-
Поблагодарили:
578 раз
Сообщение
fandaymon » Чт мар 05, 2020 6:39 pm
xor писал(а): ↑Чт мар 05, 2020 6:35 pm
fandaymon писал(а):IrisKo писал(а): ↑Чт мар 05, 2020 5:22 pm
То есть они никак не взаимодействуют с модулем "календарь" и все те категории где ставятся галочки что это праздничный или рабочий день в календаре ни на что не влияют? Проблема в том что эти 0 и 6 никак не учитывают что субботы и воскресенья могут быть рабочими, а будни могут быть праздниками. Какой тогда смысл вообще в этой функции...номер дня недели и без нее вычислить не проблема
Эти функции с календарём никак не связаны, так как модуля Календарь может и не быть в системе. Собственно Праздники и Перенесенные рабочие в календаре не так давно появились, по-моему прошлой осенью мы с Максимом их дописывали. Весь функционал определения рабочий/не рабочий в модуле есть
Перенесённые поправили? А то там какая-то ошибка, вроде, была
Отправлено с моего Redmi 4X через Tapatalk
Вроде бы поправил. Должны работать - в прошлом году после правок проверял, работало правильно
- За это сообщение автора fandaymon поблагодарил:
- xor (Чт мар 05, 2020 7:02 pm)
-
IrisKo
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
4 раза
Сообщение
IrisKo » Вс мар 08, 2020 3:52 pm
fandaymon писал(а): ↑Чт мар 05, 2020 6:16 pm
Весь функционал определения рабочий/не рабочий в модуле есть
Почему то не могу там его найти

Сам календарь заполнила, а вот как к нему обращаться и как у него "спрашивать" какой день рабочий а какой нет понять не могу. Была уверена что как раз те функции о которых писала в своем первом сообщении для этого и существуют, а оказалось что нет. Если не сложно можете дать ссылочку на описание этого функционала модуля календаря, на какую то инструкцию что ли?