Edit report at http://bugs.php.net/bug.php?id=50475&edit=1
ID: 50475
Comment by: Eric at Deplagne dot name
Reported by: nandobrt at gmail dot com
Summary: DateTime::setISODate followed by DateTime::setTime
Status: Open
Type: Bug
Package: Date/time related
Operating System: Windows XP
PHP Version: 5.3SVN-2009-12-15 (snap)
New Comment:
same with php 5.3.1 on debian squeeze
Previous Comments:
------------------------------------------------------------------------
[2010-01-19 13:05:37] yoarvi at gmail dot com
date_isodate_set should reset the have_relative flag once it has updated
the date/time value.
The following patch (5.3 svn tree) includes a fix and a test case for
this bug:
Index: ext/date/php_date.c
===================================================================
--- ext/date/php_date.c (revision 293574)
+++ ext/date/php_date.c (working copy)
@@ -3033,6 +3033,8 @@
timelib_update_ts(dateobj->time, NULL);
+ dateobj->time->have_relative = 0;
+
RETURN_ZVAL(object, 1, 0);
}
/* }}} */
Index: ext/date/tests/bug50475.phpt
===================================================================
--- ext/date/tests/bug50475.phpt (revision 0)
+++ ext/date/tests/bug50475.phpt (revision 0)
@@ -0,0 +1,16 @@
+--TEST--
+Bug #50475 (DateTime::setISODate followed by DateTime::setTime)
+--FILE--
+<?php
+date_default_timezone_set('Asia/Calcutta');
+
+$date = new DateTime('18-01-2009 00:00:00');
+$date->setISODate(2009, 6, 1);
+echo $date->format('Y-m-d H:i:s') . "\n";
+$date->setTime(8, 0);
+echo $date->format('Y-m-d H:i:s') . "\n";
+?>
+--EXPECT--
+2009-02-02 00:00:00
+2009-02-02 08:00:00
+
------------------------------------------------------------------------
[2009-12-15 03:23:53] nandobrt at gmail dot com
Description:
------------
Calling setTime on a DateTime object after having called setISODate will
change its date.
Reproduce code:
---------------
$date = new DateTime();
$date->setISODate(2009, 6);
echo $date->format('Y-m-d H:i:s') . "<br />";
$date->setTime(8, 0);
echo $date->format('Y-m-d H:i:s');
Expected result:
----------------
2009-02-02 01:11:15
2009-02-02 08:00:00
Actual result:
--------------
2009-02-02 01:11:15
2009-03-06 08:00:00
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50475&edit=1