Intereting Posts
Как сгенерировать json с помощью php? Запросы профиля внедрения Gravatar Установить часовой пояс в PHP и MySQL Yii2 Rest – индивидуальное действие и метод OPTIONS Может ли PHP «писать» или «копировать» на удаленном удаленном ресурсе, но не «отключать» или «переименовывать» («Доступ запрещен») Почему я получаю сообщение об ошибке «не удалось открыть поток» при отправке данных из контактной формы? Загружать несколько изображений с помощью codeigniter Операции mysqli_multi_query и mysql Вопрос о strpos. Как получить второе вхождение строки? Сохранить диаграммы Google как изображение htmlentities не дает желаемого результата в laravel Каковы допустимые символы в именах PHP, методах, классах и т. Д.? Отправить переменную с одной страницы на другую в PHP Показать .phtml страницу на другой .phtml странице PHP – самый быстрый способ преобразования массива 2d в 3d-массив, который сгруппирован по определенному значению

Печать Ymd список бизнес-дат между двумя датами из MySQL с использованием PHP

У меня есть эта таблица MySQL :

 desc studentabsence; +---------------------------+-------------+ | Field | Type | +---------------------------+-------------+ | student_id | INT(11) | | student_absence_startdate | date | | student_absence_enddate | date | +---------------------------+-------------+ 

Предположим, что у нас есть

student_absence_startdate = 2012-08-01
student_absence_enddate = 2012-08-08

Используя PHP, я хотел бы echo все рабочие дни между этим диапазоном (Mon-Fri).

Из вышеуказанного диапазона я хотел бы напечатать:

2012-08-01
2012-08-02
2012-08-03
2012-08-06
2012-08-07
2012-08-08

Как и где я должен начать это делать?

 // Date strings from DB $startDate = '2012-08-01'; $endDate = '2012-08-08'; // Convert to UNIX timestamps $currentTime = strtotime($startDate); $endTime = strtotime($endDate); // Loop until we reach the last day $result = array(); while ($currentTime <= $endTime) { if (date('N', $currentTime) < 6) { $result[] = date('Ym-d', $currentTime); } $currentTime = strtotime('+1 day', $currentTime); } // Show the result // You could loop the array to pretty-print it, or do it within the above loop print_r($result); 

Посмотрите, как работает

Это напечатает диапазон дат:

 $startDate = '2012-08-01'; $endDate = '2012-08-08'; $date = new DateTime($startDate); while ($date->format('Ym-d') != $endDate) { if ($date->format('N') > 5) { $date->modify('+1 day'); continue; } echo $date->format('Ym-d') . PHP_EOL; $date->modify('+1 day'); } echo $endDate;