[Сценарий] Функция Рабочий/Выходной день
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Функция Рабочий/Выходной день
Если у кого то были такие же проблемы что у меня, вот решение:
Закинуть файл в папку /htdocs/lib
Потом в сценариях можно использовать следующие:
0 - выходной, 1 - рабочий день
**********************************************
weekDay(strtotime("+1 day")); //завтра
weekDay(time()); //сегодня
weekDay(mktime(0, 0, 0, 2, 26)); //месяц, день
Закинуть файл в папку /htdocs/lib
weekDay.class.phpПоказать
Код: Выделить всё
<?php
function weekDay($date)
{
$this_year = (int) date('Y', $date);
$url = "http://xmlcalendar.ru/data/ru/".$this_year."/calendar.xml";
$url_local = "calendar.xml";
// Отключение ошибок libxml и передача полномочий по выборке и обработке информации об ошибках
libxml_use_internal_errors(true);
$res = @simplexml_load_file($url); //загружаем его и раскладываем на массив
if ($res === false)
{ //Не удалось получить данные
$res = @simplexml_load_file($url_local); // Возьмем ранее загруженный календарь
foreach(libxml_get_errors() as $error)
{ //регистрируем ошибку
registerError('Не удалось получить данные от сервиса xmlcalendar<br>Скрипт сработал используя бэкап данных', $error -> message);
}
libxml_clear_errors();
}
else
{ //Если прочитали без ошибок
$res->asXML($url_local); //запишем в файл на всякий случай
}
//Проверяем сегодняшний день по производственному календарю (рабочий или нет)
$weekDay = -1;
$this_date = date('m.d', $date);
foreach($res -> days -> day as $day)
{
$type = $day -> attributes() -> t; //тип дня: 1-выходной день, 2-короткий день, 3-рабочий день (суббота/воскресен)
$CalDate = $day -> attributes() -> d; //дата
if ($this_date == $CalDate)
{
if ($type == 1)
{ //Выходной
$weekDay = 0;
}
elseif($type == 2)
{
//Короткий день, запишим как рабочий
$weekDay = 1;
}
elseif($type == 3)
{ //Перенесенный рабочий
$weekDay = 1;
}
}
}
//Если в производственном календаре ничего не нашлось
if ($weekDay == -1)
{
if (date('w', $date) == 0 || date('w', $date) == 6)
{
$weekDay = 0;
}
else
{
$weekDay = 1;
}
}
return $weekDay;
}
// 0 - выходной, 1 - рабочий день
//**********************************************
//weekDay(strtotime("+1 day")); //завтра
//weekDay(time()); //сегодня
//echo weekDay(mktime(0, 0, 0, 2, 26)); //месяц, день
?>
0 - выходной, 1 - рабочий день
**********************************************
weekDay(strtotime("+1 day")); //завтра
weekDay(time()); //сегодня
weekDay(mktime(0, 0, 0, 2, 26)); //месяц, день
Последний раз редактировалось webms Пн май 07, 2018 11:11 am, всего редактировалось 2 раза.
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Функция Рабочий/Выходной день
обновил код, а то вчерашний не совсем правильно работал с сохраненным файлом
теперь все ок
теперь все ок
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: Функция Рабочий/Выходной день
Класс закинул в библиотеку /var/www/lib/weekDay.class.php, сохраняю тестовый сценарий
и он не сохраняется c формулировкой
Код: Выделить всё
if (weekDay(time()) = 0) {
echo 'Сегодня выходной';
}
Может нужен ребут Мажордома?Пожалуйста, заполните необходимые поля!
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Функция Рабочий/Выходной день
В условии надо сравнивать, а не присваивать.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Функция Рабочий/Выходной день
Да кстати, в коде выше нужно расскоментировать строку, иначе короткий день не отмечал рабочим в сб и вс
//Короткий день, запишим как рабочий
$weekDay = 1;
Код выше обновил https://majordomo.smartliving.ru/forum/ ... 597#p70597
//Короткий день, запишим как рабочий
$weekDay = 1;
Код выше обновил https://majordomo.smartliving.ru/forum/ ... 597#p70597
Последний раз редактировалось webms Пн май 07, 2018 11:21 am, всего редактировалось 1 раз.
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Функция Рабочий/Выходной день
directman66 писал(а): ↑Пн май 07, 2018 7:23 amКласс закинул в библиотеку /var/www/lib/weekDay.class.php, сохраняю тестовый сценарийи он не сохраняется c формулировкойКод: Выделить всё
if (weekDay(time()) = 0) { echo 'Сегодня выходной'; }
Может нужен ребут Мажордома?Пожалуйста, заполните необходимые поля!
Код: Выделить всё
if (weekDay(time()) == 0) {
echo 'Сегодня выходной';
}
- За это сообщение автора webms поблагодарил:
- directman66 (Пн май 07, 2018 11:18 am)
- Рейтинг: 1.16%
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: Функция Рабочий/Выходной день
Точно, я ж тупо скопировал из условия. Спасибо за внимание )))
Может запилить в виде модуля с настройками справочника для разных стран?
Может запилить в виде модуля с настройками справочника для разных стран?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Функция Рабочий/Выходной день
я не умею писать модули)directman66 писал(а): ↑Пн май 07, 2018 11:17 amТочно, я ж тупо скопировал из условия. Спасибо за внимание )))
Может запилить в виде модуля с настройками справочника для разных стран?
да и хз откуда данные брать для других стран
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: Функция Рабочий/Выходной день
Запилю, не вопрос, это упростит развертывание библиотек.
Ждем коллег из СНГ с информацией.
Только мне кажется на каждый ресурс придется свои парсеры делать. И лучше работать с локальной базой данных, которую периодически обновлять.
Ждем коллег из СНГ с информацией.
Только мне кажется на каждый ресурс придется свои парсеры делать. И лучше работать с локальной базой данных, которую периодически обновлять.
- За это сообщение автора directman66 поблагодарил:
- webms (Пн май 07, 2018 11:34 am)
- Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram