views:

347

answers:

3

I'm trying the following command in PHP 5.2.12 :

print (date('Y-m-d', strtotime('2009-12 last day')));

Regarding to the php.net manual :

date('m/d/y', strtotime('2009-03 last day')); # 03/31/09

it should display the last day of march 2009 (2009-03-31) !

Mine returns the last day of the previous month ? why ? :

2009-11-30
+2  A: 

The code you posted fails in the manner you described; it seems that the description in the PHP manual pages (which as mentioned by SilentGhost is just a user comment) is non-verified code.

If you need the last day of a given month, try this:

date('Y-m-d', strtotime("2009-12 next month - 1 hour"));
Roadmaster
I always use 12 hours, just in case someone sometime decides that daylight savings day is the first or last day of some month.
Milan Babuškov
+1  A: 

If you're using PHP 5.3 try using the DateTime class:

<?php
    $date = new DateTime("2009-03-01");
    $date->modify("last day of previous month");
    echo $date->format("m/d/y");
?>

It must be 5.3 as $date->modify("last day of previous month"); won't work in 5.2.* or earlier.

John Conde
A: 

While this works on my Mac on 5.3.2, it does NOT work on a FREEBSD 5.2.12 php. Sigh.

Martin FIsher