Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- define('ONE_WEEK', 604800); // 7 * 24 * 60 * 60
- function number_of_days($days, $start, $end){
- $w = array(date('w', $start), date('w', $end));
- $x = floor(($end - $start) / ONE_WEEK);
- $sum = 0;
- for($day = 0; $day < 7; ++$day){
- if($days & pow(2, $day)){
- $sum += $x + ($w[0] > $w[1] ? $w[0] <= $day || $day <= $w[1] : $w[0] <= $day && $day <= $w[1]);
- }
- }
- return $sum;
- }
- $today = date_create('now');
- $relative = array('start' => 'first day of ' . $today->format('F Y'), 'end' => 'last day of ' . $today->format('F Y'));
- $start = strtotime($relative['start']);
- $end = strtotime($relative['end']);
- echo ucwords(implode(' - ', $relative)) . "<br />\n<br />\n";
- // pow(2, 4) == 1 << 4 // THURSDAY
- // pow(2, 5) == 1 << 5 // FRIDAY
- echo 'Sundays: ' . number_of_days(pow(2, 0), $start, $end) . "<br />\n";
- echo 'Mondays: ' . number_of_days(pow(2, 1), $start, $end) . "<br />\n";
- echo 'Tuesdays: ' . number_of_days(pow(2, 2), $start, $end) . "<br />\n";
- echo 'Wednesdays: ' . number_of_days(pow(2, 3), $start, $end) . "<br />\n";
- echo 'Thursdays: ' . number_of_days(pow(2, 4), $start, $end) . "<br />\n";
- echo 'Fridays: ' . number_of_days(pow(2, 5), $start, $end) . "<br />\n";
- echo 'Saturdays: ' . number_of_days(pow(2, 6), $start, $end) . "<br />\n";
- echo 'Workdays: ' . number_of_days(0x3E, $start, $end) . "<br />\n"; // WORKDAYS: MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY
- echo 'Weekends: ' . number_of_days(pow(2, 0) | pow(2, 6), $start, $end) . "<br />\n"; // WEEKENDS: SUNDAY | SATURDAY
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement