note 83326 added to function.date

From: Date: Wed, 21 May 2008 08:00:39 +0000
Subject: note 83326 added to function.date
Groups: php.notes 
Request: Send a blank email to php-notes+get-139571@lists.php.net to get a copy of this message
For output formatting of a SAMP based seminar announcement system, i had to fetch the date of every friday of a given month in a given year. Here's what i did: <?php $givenYear = $_GET["givenYear"]; # assume "2006" $givenMonth = $_GET["givenMonth"]; # assume "12" if ($givenMonth != '12') { $nextGivenMonth = "1"; $nextGivenYear = $givenYear + 1;} else { $nextGivenMonth = $givenMonth + 1; $nextGivenYear = $givenYear;} # Get the first weekday of the month $firstDayOfMonth = date("d", mktime(0, 0, 0, $givenMonth, 1, $givenYear)); $firstWeekDayOfMonth = date("l", mktime(0, 0, 0, $givenMonth, 1, $givenYear)); # Count days to first Friday switch ($firstWeekDayOfMonth) { case 'Monday': $numOfDaysToFirstFriday = "4"; break; case 'Tuesday': $numOfDaysToFirstFriday = "3"; break; case 'Wednesday': $numOfDaysToFirstFriday = "2"; break; case 'Thursday': $numOfDaysToFirstFriday = "1"; break; case 'Friday': $numOfDaysToFirstFriday = "0"; break; case 'Saturday': $numOfDaysToFirstFriday = "6"; break; case 'Sunday': $numOfDaysToFirstFriday = "5"; break;} # Get first Friday's date $numOfDaysToFirstFriday = 1 + $numOfDaysToFirstFriday; $firstFridayOfMonthDate = date("d.m.Y", mktime(0, 0, 0, $givenMonth, $numOfDaysToFirstFriday, $givenYear)); $firstFridayOfMonthDay = date("d", mktime(0, 0, 0, $givenMonth, $numOfDaysToFirstFriday, $givenYear)); # Get the last weekday of the month $lastDayOfMonth = date("d", strtotime("-1 day", strtotime(date("$nextGivenYear-$nextGivenMonth-01")))); $lastWeekDayOfMonth = date("l", strtotime("-1 day", strtotime(date("$nextGivenYear-$nextGivenMonth-01")))); # Count days to last Friday switch ($lastWeekDayOfMonth) { case 'Monday': $numOfDaysToLastFriday = "3"; break; case 'Tuesday': $numOfDaysToLastFriday = "4"; break; case 'Wednesday': $numOfDaysToLastFriday = "5"; break; case 'Thursday': $numOfDaysToLastFriday = "6"; break; case 'Friday': $numOfDaysToLastFriday = "0"; break; case 'Saturday': $numOfDaysToLastFriday = "1"; break; case 'Sunday': $numOfDaysToLastFriday = "2"; break;} # Get last Friday's date $numOfDaysToLastFriday = $lastDayOfMonth - $numOfDaysToLastFriday; $lastFridayOfMonthDate = date("d.m.Y", mktime(0, 0, 0, $givenMonth, $numOfDaysToLastFriday, $givenYear)); $lastFridayOfMonthDay = date("d", mktime(0, 0, 0, $givenMonth, $numOfDaysToLastFriday, $givenYear)); $divisor = $lastFridayOfMonthDay - $firstFridayOfMonthDay; $divisor = $divisor / 7; global $divisor; # Get the dates of all Fridays in the given Month (can be either 4 or 5) if ($divisor=='3') { $firstFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $numOfDaysToFirstFriday, $givenYear)); $secondFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $lastFridayOfMonthDay - 14, $givenYear)); $thirdFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $lastFridayOfMonthDay - 7, $givenYear)); $lastFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $numOfDaysToLastFriday, $givenYear));} else if ($divisor=='4') { $firstFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $numOfDaysToFirstFriday, $givenYear)); $secondFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $lastFridayOfMonthDay - 21, $givenYear)); $thirdFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $lastFridayOfMonthDay - 14, $givenYear)); $fourthFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $lastFridayOfMonthDay - 7, $givenYear)); $lastFridayOfMonth = date("Y/m/d", mktime(0, 0, 0, $givenMonth, $numOfDaysToLastFriday, $givenYear));} ?> Comments, suggestions and bugfixes are welcome ;-)) ---- Server IP: 217.160.72.57 Probable Submitter: 149.217.48.20 ---- Manual Page -- http://www.php.net/manual/en/function.date.php Edit -- https://master.php.net/note/edit/83326 Del: integrated -- https://master.php.net/note/delete/83326/integrated Del: useless -- https://master.php.net/note/delete/83326/useless Del: bad code -- https://master.php.net/note/delete/83326/bad+code Del: spam -- https://master.php.net/note/delete/83326/spam Del: non-english -- https://master.php.net/note/delete/83326/non-english Del: in docs -- https://master.php.net/note/delete/83326/in+docs Del: other reasons-- https://master.php.net/note/delete/83326 Reject -- https://master.php.net/note/reject/83326 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#139571) next »