[Сценарий] Функция Рабочий/Выходной день

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Ср янв 31, 2018 1:56 pm

Код: Выделить всё

$productionCalendar = @file_get_contents('http://xmlcalendar.ru/data/ru/' . $this_year . '/calendar.xml'); 
не хочет работать, помогите плз, куда копать
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Функция Рабочий/Выходной день

Сообщение xor » Ср янв 31, 2018 8:57 pm

Cсылка-то открывается?
2018-01-31_20-54-01.png
2018-01-31_20-54-01.png (31.75 КБ) 4895 просмотров
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 531 раз
Контактная информация:

Re: Функция Рабочий/Выходной день

Сообщение Vovix » Чт фев 01, 2018 12:31 am

webms писал(а):

Код: Выделить всё

$productionCalendar = @file_get_contents('http://xmlcalendar.ru/data/ru/' . $this_year . '/calendar.xml'); 
не хочет работать, помогите плз, куда копать
А вы в каком формате "подсовываете" этой функции $date ?

вероятнее вы вызываете со значением $date = '2018-02-01' ну или что-то подобное!?

ну естественно $this_year = (int) date( "Y", $date); окажется равным 1970

ну а такого: http://xmlcalendar.ru/data/ru/1970/calendar.xml конечно нет!

нужно вызывать со значение равным timestamp (функция time())

т.е. например так:

Код: Выделить всё

weekDay(time());
ну или так:

Код: Выделить всё

$date = time();
weekDay($date);
Также обратите внимание, что у автора используется: DateTime.productionCalendar
У вас вероятно нет объекта DateTime!!!
Используйте свой! Если бы просто свойства у вас не было, то оно бы создалось, а вот объект, вроде, сам не создастся(!?)
За это сообщение автора Vovix поблагодарил:
webms (Чт фев 01, 2018 9:29 am)
Рейтинг: 1.16%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Чт фев 01, 2018 9:30 am

Не, проблема в другом
Ссылка да, открывается
Вложения
Clip2net_180201092756.png
Clip2net_180201092756.png (18.45 КБ) 4847 просмотров
Clip2net_180201092838.png
Clip2net_180201092838.png (30.4 КБ) 4848 просмотров
Clip2net_180201092740.png
Clip2net_180201092740.png (35.88 КБ) 4848 просмотров
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Функция Рабочий/Выходной день

Сообщение skysilver » Чт фев 01, 2018 9:39 am

webms писал(а):Не, проблема в другомСсылка да, открывается

Код: Выделить всё

$url = "http://xmlcalendar.ru/data/ru/2018/calendar.xml";

// Отключение ошибок libxml и передача полномочий по выборке и обработке информации об ошибках пользователю
libxml_use_internal_errors(true);

$res = @simplexml_load_file($url);

if( $res ===  false) {
  echo 'Не удалось получить данные от сервиса xmlcalendar.';
    foreach( libxml_get_errors() as $error ) {
       echo $error->message;
  }
     libxml_clear_errors(); 
} 
else {
  //тут вытягиваем данные из xml-ки
  var_dump($res); 
}
За это сообщение автора skysilver поблагодарил:
webms (Чт фев 01, 2018 9:41 am)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Чт фев 01, 2018 9:41 am

Код: Выделить всё

object(SimpleXMLElement)#1 (3) { ["@attributes"]=> array(3) { ["year"]=> string(4) "2018" ["lang"]=> string(2) "ru" ["date"]=> string(10) "2017.10.22" } ["holidays"]=> object(SimpleXMLElement)#2 (1) { ["holiday"]=> array(8) { [0]=> object(SimpleXMLElement)#4 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "1" ["title"]=> string(116) "Новогодние каникулы (в ред. Федерального закона от 23.04.2012 № 35-ФЗ)" } } [1]=> object(SimpleXMLElement)#5 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "2" ["title"]=> string(35) "Рождество Христово" } } [2]=> object(SimpleXMLElement)#6 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "3" ["title"]=> string(46) "День защитника Отечества" } } [3]=> object(SimpleXMLElement)#7 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "4" ["title"]=> string(50) "Международный женский день" } } [4]=> object(SimpleXMLElement)#8 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "5" ["title"]=> string(41) "Праздник Весны и Труда" } } [5]=> object(SimpleXMLElement)#9 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "6" ["title"]=> string(21) "День Победы" } } [6]=> object(SimpleXMLElement)#10 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "7" ["title"]=> string(21) "День России" } } [7]=> object(SimpleXMLElement)#11 (1) { ["@attributes"]=> array(2) { ["id"]=> string(1) "8" ["title"]=> string(44) "День народного единства" } } } } ["days"]=> object(SimpleXMLElement)#3 (1) { ["day"]=> array(26) { [0]=> object(SimpleXMLElement)#11 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.01" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [1]=> object(SimpleXMLElement)#10 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.02" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [2]=> object(SimpleXMLElement)#9 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.03" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [3]=> object(SimpleXMLElement)#8 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.04" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [4]=> object(SimpleXMLElement)#7 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.05" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [5]=> object(SimpleXMLElement)#6 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.06" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [6]=> object(SimpleXMLElement)#5 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.07" ["t"]=> string(1) "1" ["h"]=> string(1) "2" } } [7]=> object(SimpleXMLElement)#4 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "01.08" ["t"]=> string(1) "1" ["h"]=> string(1) "1" } } [8]=> object(SimpleXMLElement)#12 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "02.22" ["t"]=> string(1) "2" } } [9]=> object(SimpleXMLElement)#13 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "02.23" ["t"]=> string(1) "1" ["h"]=> string(1) "3" } } [10]=> object(SimpleXMLElement)#14 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "03.07" ["t"]=> string(1) "2" } } [11]=> object(SimpleXMLElement)#15 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "03.08" ["t"]=> string(1) "1" ["h"]=> string(1) "4" } } [12]=> object(SimpleXMLElement)#16 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "03.09" ["t"]=> string(1) "1" } } [13]=> object(SimpleXMLElement)#17 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "04.28" ["t"]=> string(1) "2" } } [14]=> object(SimpleXMLElement)#18 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "04.30" ["t"]=> string(1) "1" } } [15]=> object(SimpleXMLElement)#19 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "05.01" ["t"]=> string(1) "1" ["h"]=> string(1) "5" } } [16]=> object(SimpleXMLElement)#20 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "05.02" ["t"]=> string(1) "1" } } [17]=> object(SimpleXMLElement)#21 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "05.08" ["t"]=> string(1) "2" } } [18]=> object(SimpleXMLElement)#22 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "05.09" ["t"]=> string(1) "1" ["h"]=> string(1) "6" } } [19]=> object(SimpleXMLElement)#23 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "06.09" ["t"]=> string(1) "2" } } [20]=> object(SimpleXMLElement)#24 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "06.11" ["t"]=> string(1) "1" } } [21]=> object(SimpleXMLElement)#25 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "06.12" ["t"]=> string(1) "1" ["h"]=> string(1) "7" } } [22]=> object(SimpleXMLElement)#26 (1) { ["@attributes"]=> array(3) { ["d"]=> string(5) "11.04" ["t"]=> string(1) "1" ["h"]=> string(1) "8" } } [23]=> object(SimpleXMLElement)#27 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "11.05" ["t"]=> string(1) "1" } } [24]=> object(SimpleXMLElement)#28 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "12.29" ["t"]=> string(1) "2" } } [25]=> object(SimpleXMLElement)#29 (1) { ["@attributes"]=> array(2) { ["d"]=> string(5) "12.31" ["t"]=> string(1) "1" } } } } } 
Заработал
А подскажите пожалуйста как привязать код выше с кодом ТС?

*** Сообщение запрещено. Сообщение похоже на спам. ***
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Чт фев 01, 2018 9:42 am

Код: Выделить всё

object(SimpleXMLElement)#1 (3) { ["@attributes"]=> array(3) { ["year"]=> string(4) "2018" ["lang"]=> string(2) "ru" ["date"]=> string(10) "2017.10.22" } ["holidays"]=> object(SimpleXMLElement)#2 ....  
Заработал
А подскажите пожалуйста как привязать код выше с кодом https://majordomo.smartliving.ru/forum/ ... 172#p37320?
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Функция Рабочий/Выходной день

Сообщение skysilver » Чт фев 01, 2018 9:57 am

webms писал(а):ЗаработалА подскажите пожалуйста как привязать код выше с кодом https://majordomo.smartliving.ru/forum/ ... 172#p37320?
В else вместо var_dump вставить

Код: Выделить всё

 //Проверяем сегодняшний день по производственному календарю (рабочий или нет)
    $weekDay = -1;
    $this_date = date('m.d', $date);
    
     foreach ($res->days->day as $day) {
        $type = $day->attributes()->t; //тип дня: 1 - выходной день, 2 - короткий день, 3 - рабочий день (суббота/воскресен)
        echo $type . PHP_EOL;
         $CalDate = $day->attributes()->d; //дата
         echo $CalDate . PHP_EOL;
        if ($this_date == $CalDate) {
            if ($type == 1) { //выходной
                $weekDay = 0;
            } elseif ($type == 2) {
                //Короткий день
                //$weekDay = 1;
            } elseif ($type == 3) { //Перенесенный рабочий
                $weekDay = 0;
            }
        }
    }
    //Если в производственном календаре ничего не нашлось
    if ($weekDay == -1) {
        if (date('w', $date) == 0 || date('w', $date) == 6) {
            $weekDay = 0;
        } else {
            $weekDay = 1;
        }
    }
echo надо будет убрать после отладки ))
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Чт фев 01, 2018 10:05 am

похоже я не проснулся
а как проверять рабочий сегодня день или выходной?

я просто хочу например при запросе получить данные выходной сегодня или нет

Код: Выделить всё

if ($сегодняшнийДень == weekDay(time()) { echo 'выходной';}
elseif ($завтрашнийДень == weekDay(strtotime("+1 day")) { echo 'выходной';}
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Функция Рабочий/Выходной день

Сообщение webms » Чт фев 01, 2018 12:20 pm

*удалил*
Последний раз редактировалось webms Пн май 07, 2018 11:28 am, всего редактировалось 1 раз.
Ответить