Edit report at http://bugs.php.net/bug.php?id=51096&edit=1

 ID:               51096
 Updated by:       der...@php.net
 Reported by:      phpbugs at rizzt dot kicks-ass dot org
 Summary:          strtotime returns wrong results
-Status:           Assigned
+Status:           Closed
 Type:             Bug
 Package:          Date/time related
 Operating System: linux
 PHP Version:      5.2.12
 Assigned To:      derick

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------
[2010-03-06 17:04:57] der...@php.net

Automatic comment from SVN on behalf of derick
Revision: http://svn.php.net/viewvc/?view=revision&revision=295892
Log: - Fixed bug #51096 ('last day' and 'first day' are handled
incorrectly when
  parsing date strings).
- For 5.2 I just added the test case minus new 5.3 additions.

------------------------------------------------------------------------
[2010-02-20 17:10:49] der...@php.net

Actually, there is a bug here "first day" and "last day" should be "+1
day" and "-1 day".

------------------------------------------------------------------------
[2010-02-20 15:22:05] der...@php.net

That's because those things were introduced in PHP 5.3:



der...@kossu:~$ pe 5.2dev

der...@kossu:~$ php

<?php

echo strftime('1 %Y/%m/%d')."\n";

echo strftime('2 %Y/%m/%d', strtotime('first day'))."\n";

echo strftime('3 %Y/%m/%d', strtotime('last day'))."\n";

echo strftime('4 %Y/%m/%d', strtotime('next month'))."\n";

echo strftime('5 %Y/%m/%d', strtotime('first day next month'))."\n";

echo strftime('6 %Y/%m/%d', strtotime('last day next month'))."\n";

?>

1 2010/02/20

2 2010/02/21

3 2010/02/19

4 2010/03/20

5 2010/03/21

6 2010/03/19





der...@kossu:~$ pe 5.3dev

der...@kossu:~$ php

<?php

echo strftime('1 %Y/%m/%d')."\n";

echo strftime('2 %Y/%m/%d', strtotime('first day'))."\n";

echo strftime('3 %Y/%m/%d', strtotime('last day'))."\n";

echo strftime('4 %Y/%m/%d', strtotime('next month'))."\n";

echo strftime('5 %Y/%m/%d', strtotime('first day next month'))."\n";

echo strftime('6 %Y/%m/%d', strtotime('last day next month'))."\n";

?>

1 2010/02/20

2 2010/02/01

3 2010/02/28

4 2010/03/20

5 2010/03/01

6 2010/03/31



------------------------------------------------------------------------
[2010-02-20 15:20:45] phpbugs at rizzt dot kicks-ass dot org

Sorry, I forgot to change 2 & 3 



Expected result:

----------------

1 2010/02/20

2 2010/02/01

3 2010/02/28

4 2010/03/20

5 2010/03/01

6 2010/03/31

------------------------------------------------------------------------
[2010-02-20 15:18:08] phpbugs at rizzt dot kicks-ass dot org

Description:
------------
strtotime with "first day next month" or "last day next month" does not


work

Reproduce code:
---------------
echo strftime('1 %Y/%m/%d')."\n";

echo strftime('2 %Y/%m/%d', strtotime('first day'))."\n";

echo strftime('3 %Y/%m/%d', strtotime('last day'))."\n";

echo strftime('4 %Y/%m/%d', strtotime('next month'))."\n";

echo strftime('5 %Y/%m/%d', strtotime('first day next month'))."\n";

echo strftime('6 %Y/%m/%d', strtotime('last day next month'))."\n";





Expected result:
----------------
1 2010/02/20

2 2010/02/21

3 2010/02/19

4 2010/03/20

5 2010/03/01

6 2010/03/31





Actual result:
--------------
1 2010/02/20

2 2010/02/21

3 2010/02/19

4 2010/03/20

5 2010/03/21

6 2010/03/19






------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51096&edit=1

Reply via email to