No problem, just glad it's found some wider use. Cheers, Greg.
> -----Original Message----- > From: Phil Dowson [mailto:[EMAIL PROTECTED] > Sent: 29 September 2003 17:55 > To: [EMAIL PROTECTED] > Subject: Re: [PHP] How many Mondays in a month? > > Greg, > > That worked brilliantly... I bow down to your sheer > excellence!!! Thankyou Thankyou Thankyou > > > > "Greg Wiley" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] > er.demon.net... > Funny you should ask this because I've been meaning to share > some code that I wrote a few months ago that does exactly > this for any day of the week. > > Please feel free to use this and make changes. I'd appreciate > any changes/bug fixes being sent back to me though. > > <?php > /* > * num_days > * > * A function that takes a day, a month and a year and > returns the number of > * occurrences of that day in the given month and year. > * > * Arguments: > * day - the day required > * month - which month are we talking about > * year - which year are we talking about > * > * Returns: > * occ - the number of times the day occurs in the month. > * or NULL if there are invalid parameters. > */ > function num_days ($day, $month, $year) > { > $day_array = array("Mon" => "Monday", > "Tue" => "Tuesday", > "Wed" => "Wednesday", > "Thu" => "Thursday", > "Fri" => "Friday", > "Sat" => "Saturday", > "Sun" => "Sunday"); > > $month_array = array(1 => "Jan", "Feb", "Mar", "Apr", "May", "Jun", > "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); > > /* > * Check our arguments are valid. > */ > > /* > * $day must be either a full day string or the 3 letter abbreviation. > */ > if (!(in_array($day, $day_array) || > array_key_exists($day, $day_array))) { echo "num_days: > invalid argument. \$day must be day name or three letter > abbreviation"; return; } > > /* > * $month must be either a full month name or its 3 letter > abrreviation */ if (($mth = array_search(substr($month,0,3), > $month_array)) <= 0) { echo "num_days: invalid argument. > \$month must be month name or three letter abbreviation"; return; } > > /* > * Now fetch the previous $day of $month+1 in $year; > * this will give us the last $day of $month. > */ > > /* > * Calculate the timestamp of the 01/$mth+1/$year. > */ > $time = mktime(0,0,0,$mth+1,1,$year); > > $str = strtotime("last $day", $time); > > /* > * Return nth day of month. > */ > $date = date("j", $str); > > /* > * If the difference between $date1 and $date2 is 28 then > * there are 5 occurences of $day in $month/$year, otherwise > * there are just 4. > */ > if ($date <= 28) { > return 4; > } else { > return 5; > } > } > > ?> > > The other function I have does this: > > /* > * nth_day > * > * A function that takes a number and a day and returns the date of > * nth occurrence of that day in the given month and year. > * > * Arguments: > * nth - the nth occurence required > * day - the day required > * month - which month are we talking about > * year - which year are we talking about > * > * Returns: > * date - the date on which the nth day occurs in month and year. > * or NULL for errors. > */ > > Give me a shout if anyone wants this one. > > Cheers, Greg. > > > > -----Original Message----- > > From: Phil Dowson [mailto:[EMAIL PROTECTED] > > Sent: 29 September, 2003 16:22 > > To: [EMAIL PROTECTED] > > Subject: [PHP] How many Mondays in a month? > > > > > > Hi, > > > > I have posted a similar question in php.db, but I was wondering if > > someone could help out with a non-db issue. I am trying to display > > statistics of visitors to my web site, and what I would > like to do is > > show the average number of visitors that have visited the site in a > > given month for a certain day e.g..: > > > > Stats for www.mysite.com for 09/2003 > > > > Monday - 15 average - 65 total > > Tuesday - 16 average - 66 total > > Wednesday - 14 average - 65 total > > Thursday - 13 average - 63 total > > Friday - 15 average - 65 total > > Saturday - 5 average - 25 total > > Sunday - 6 average - 28 total > > > > I have tried a number of ways to do this, but I cannot work > out a way > > to show the number for example Mondays that will be in a > given month, > > which I need to work out the average. I can work out the total easy > > enough, just not the average. > > > > TIA > > > > Phil Dowson > > > > -- > > PHP General Mailing List (http://www.php.net/) To > unsubscribe, visit: > > http://www.php.net/unsub.php > > > > > > -- > PHP General Mailing List (http://www.php.net/) To > unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php