За последние 24 часа нас посетили 94742 программиста и 5606 роботов. Сейчас ищут 2439 программистов ...

Подсчет выходных и праздничных дней

Тема в разделе "PHP для новичков", создана пользователем АлександрАрфист, 9 июн 2016.

  1. АлександрАрфист

    С нами с:
    9 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Парни, плиз помогите написать следующую функцию:

    Требуется написать функцию на языке PHP, которая возвращает количество выходных и праздничных дней между двумя произвольными датами.

    Прототип функции:

    PHP:
    1. function holidays_count($datestart, $dateend, $holidays = array())
    где:

    $datestart – дата начала периода,

    $dateend – дата конца периода,

    $holidays – массив содержащий список праздничных дней.
     
    #1 АлександрАрфист, 9 июн 2016
    Последнее редактирование модератором: 9 июн 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Показывай свои наработки.
     
    metadon нравится это.
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну так задавай конкретные вопросы. Функцию в этом разделе от начала до конца никто писать тебе не будет.
     
  4. АлександрАрфист

    С нами с:
    9 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Ок. Моя версия такая. Хотелось бы услышать насколько корректна:
    PHP:
    1. <?php
    2.  
    3.  
    4. $datetime1 = new DateTime('2016-06-01');
    5. $datetime2 = new DateTime('2016-07-03');
    6.  
    7. //день народного единства
    8. $holi1 = new DateTime('2016-06-12');
    9.  
    10. //нет такого праздника, просто добавил в массив
    11. $holi2 = new DateTime('2016-06-29');
    12. $holidays = [$holi1, $holi2];
    13.  
    14.  
    15. function holidays_count($datestart, $dateend, $holidays){
    16.     $weekend = 0;
    17.     $hdays = 0;
    18.     $interval = new DateInterval('P1D');
    19.     while($datestart <= $dateend){
    20.         if($datestart->format('N') == 6 OR $datestart->format('N') == 7)
    21.             $weekend++;
    22.         if(in_array($datestart, $holidays))
    23.             $hdays++;
    24.         $datestart->add($interval);
    25.  
    26.     }
    27.     echo "выходных: " . $weekend;
    28.     echo "________________";
    29.     echo "праздничных дней: " . $hdays;
    30. }
    31.  
    32. holidays_count($datetime1, $datetime2, $holidays);
    33.  
    34. ?>
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    если работает, то всё отлично
     
    metadon нравится это.