diff options
| author | Derick Rethans <derick@php.net> | 2010-12-15 21:45:25 +0000 |
|---|---|---|
| committer | Derick Rethans <derick@php.net> | 2010-12-15 21:45:25 +0000 |
| commit | 3a03c53dbd5d3526448ee7708d9cfe534a595ce1 (patch) | |
| tree | 0bc26281d31c39981123bcd468931b23002034ce /ext/date/php_date.c | |
| parent | 69894eaf80962471c0e91b833f06de5181752844 (diff) | |
| download | php-git-3a03c53dbd5d3526448ee7708d9cfe534a595ce1.tar.gz | |
- Fixed a bug in DateTime->modify() where absolute date/time statements had no
effect.
Diffstat (limited to 'ext/date/php_date.c')
| -rw-r--r-- | ext/date/php_date.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 8a35f9586b..b30e8431c6 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2792,6 +2792,31 @@ PHP_FUNCTION(date_modify) memcpy(&dateobj->time->relative, &tmp_time->relative, sizeof(struct timelib_rel_time)); dateobj->time->have_relative = tmp_time->have_relative; dateobj->time->sse_uptodate = 0; + + if (tmp_time->y != -99999) { + dateobj->time->y = tmp_time->y; + } + if (tmp_time->m != -99999) { + dateobj->time->m = tmp_time->m; + } + if (tmp_time->d != -99999) { + dateobj->time->d = tmp_time->d; + } + + if (tmp_time->h != -99999) { + dateobj->time->h = tmp_time->h; + if (tmp_time->i != -99999) { + dateobj->time->i = tmp_time->i; + if (tmp_time->s != -99999) { + dateobj->time->s = tmp_time->s; + } else { + dateobj->time->s = 0; + } + } else { + dateobj->time->i = 0; + dateobj->time->s = 0; + } + } timelib_time_dtor(tmp_time); timelib_update_ts(dateobj->time, NULL); |
