Advertisement
Guest User

Untitled

a guest
May 23rd, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. <?php
  2. define('ONE_WEEK', 604800); // 7 * 24 * 60 * 60
  3.  
  4. function number_of_days($days, $start, $end){
  5. $w = array(date('w', $start), date('w', $end));
  6. $x = floor(($end - $start) / ONE_WEEK);
  7. $sum = 0;
  8.  
  9. for($day = 0; $day < 7; ++$day){
  10. if($days & pow(2, $day)){
  11. $sum += $x + ($w[0] > $w[1] ? $w[0] <= $day || $day <= $w[1] : $w[0] <= $day && $day <= $w[1]);
  12. }
  13. }
  14.  
  15. return $sum;
  16. }
  17.  
  18. $today = date_create('now');
  19. $relative = array('start' => 'first day of ' . $today->format('F Y'), 'end' => 'last day of ' . $today->format('F Y'));
  20. $start = strtotime($relative['start']);
  21. $end = strtotime($relative['end']);
  22. echo ucwords(implode(' - ', $relative)) . "<br />\n<br />\n";
  23.  
  24. // pow(2, 4) == 1 << 4 // THURSDAY
  25. // pow(2, 5) == 1 << 5 // FRIDAY
  26.  
  27. echo 'Sundays: ' . number_of_days(pow(2, 0), $start, $end) . "<br />\n";
  28. echo 'Mondays: ' . number_of_days(pow(2, 1), $start, $end) . "<br />\n";
  29. echo 'Tuesdays: ' . number_of_days(pow(2, 2), $start, $end) . "<br />\n";
  30. echo 'Wednesdays: ' . number_of_days(pow(2, 3), $start, $end) . "<br />\n";
  31. echo 'Thursdays: ' . number_of_days(pow(2, 4), $start, $end) . "<br />\n";
  32. echo 'Fridays: ' . number_of_days(pow(2, 5), $start, $end) . "<br />\n";
  33. echo 'Saturdays: ' . number_of_days(pow(2, 6), $start, $end) . "<br />\n";
  34.  
  35. echo 'Workdays: ' . number_of_days(0x3E, $start, $end) . "<br />\n"; // WORKDAYS: MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY
  36. 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