I looked into this, and the modify function was not setting the timezone information back to the parent dateobj. I have created a patch that does this, IF the timezone information is set on the new modified timestamp. It is attached to the bug itself, and here as well.
This is, of course, assuming that date_modify() should actually modify the timezone information. If this is intended functionality, then this patch will fix it. If not, the bug should be closed as a no fix. Thanks
--- ../php-5.4.9_orig/ext/date/php_date.c 2012-11-20 23:12:20.000000000 -0600 +++ ext/date/php_date.c 2012-12-05 10:27:47.586424481 -0600 @@ -2763,6 +2763,24 @@ dateobj->time->s = 0; } } + + if(tmp_time->zone_type) { + dateobj->time->zone_type = tmp_time->zone_type; + switch (tmp_time->zone_type) { + case TIMELIB_ZONETYPE_ID: + dateobj->time->tz_info = tmp_time->tz_info; + break; + case TIMELIB_ZONETYPE_OFFSET: + dateobj->time->z = tmp_time->z; + break; + case TIMELIB_ZONETYPE_ABBR: + dateobj->time->z = tmp_time->z; + dateobj->time->dst = tmp_time->dst; + dateobj->time->tz_abbr = strdup(tmp_time->tz_abbr); + break; + } + } + timelib_time_dtor(tmp_time); timelib_update_ts(dateobj->time, NULL);
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php