ID: 49115 Updated by: ras...@php.net Reported By: php at davidstockton dot com -Status: Open +Status: Bogus Bug Type: Date/time related Operating System: Windows XP/Linux PHP Version: 5.2.10 New Comment:
date() is doing what it is supposed to. You are passing it a timestamp in March. strtotime() returns a timestamp in March because you have not been specific enough. When you just give it a month and nothing else, it makes some assumptions. For example, it takes the current year and the current date. So, you are asking strtotime for February 30, 2009 which actually doesn't exist since February doesn't have 30 days, so it gives you the closest match which is March 2nd. Not a bug. You just have to be more explicit. Like "February 1" Previous Comments: ------------------------------------------------------------------------ [2009-07-30 23:25:53] php at davidstockton dot com Also, not sure if this is related, but the following code has similar strange behavior: for ($i = 1; $i <= 12; $i++) { echo date('F', gmmktime(0,0,0,$i)), "<br/>"; } Output: -------- January March March April May June July August September October November December Expected: ---------- January February March April May June July August September October November December I'd be happy to open a new defect if it's not related, or to be told why these are correct behavior. Thanks. ------------------------------------------------------------------------ [2009-07-30 23:16:45] php at davidstockton dot com Description: ------------ If I use strtotime on 'February' the resulting timestamp is in March. Reproduce code: --------------- echo date('F', strtotime('February')); Expected result: ---------------- February Actual result: -------------- March ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=49115&edit=1