On Fri, Mar 9, 2012 at 9:23 AM, Tedd Sperling <tedd.sperl...@gmail.com> wrote:
> On Mar 8, 2012, at 6:53 PM, Daniel Brown wrote:
> On Mar 8, 2012 6:14 PM, "Tedd Sperling" <tedd.sperl...@gmail.com> wrote:
>>
>> > Side-point: I find it interesting that getdate() has all sorts of neat 
>> > descriptions for the current month (such as, what weekday a numbered day 
>> > is), but lacks how many days are in the month. Doesn't that seem odd?
>>
>> Oh, I see what you're saying now.  Well, using getdate(), how else would you 
>> think to pass the parameter to get the last day other than using the current 
>> month and the last day (which would then obviously be overkill, of course).
>
> Well.. you could use any number that exceeds 31 -- or -- as I would have 
> suggested if it had been up to me, zero day would provide the number of days 
> in *that* month rather than the number of days in the previous month, which 
> was the point of my post.
>
>> All of this aside, though, you may instead want to use something along the 
>> lines of date('d',strtotime('last day of this month')); in tandem with your 
>> date formatting.
>
> That's a good idea, but
>
>> date('d',strtotime('last day of this month'));
>
>
> gives me the number of days in *this* month, but not the next, or previous, 
> month.
>
> I need the result to be whatever date was selected -- something like:
>
> $number_days = date('d',strtotime('last day of April, 2014'));
>
> But that doesn't work.
>
> You see, I need something that makes sense to students. The idea that you 
> have to use the zero day (whatever that is) of the next month to see how many 
> days there are in this month is strange and confusing -- again my point.
>
> Thus far, the following looks better than what I came up with::
>
> $what_date = getdate(mktime(0, 0, 0, $mon, 32, $year));
> $days_in_month = 32 - $what_date['mday'];
>
> But it's still strange.
>
> I was using:
>
>        // get the last day of the month
>        $cont = true;
>        $tday = 27;
>        while (($tday <= 32) && ($cont))
>                {
>                $tdate = getdate(mktime(0,0,0,$mon,$tday,$year));
>                if ($tdate["mon"] != $mon)
>                        {
>                        $lastday = $tday - 1;
>                        $cont = false;
>                        }
>                $tday++;
>                }
>
> It made sense, but was too long. I figured there should be something better 
> and easier to explain -- but I'm still looking.

function count_days($month, $year) { return (mktime(0, 0, 0, $month+1,
1, $year) - mktime(0, 0, 0, $month, 1, $year))/86400; }

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to