summaryrefslogtreecommitdiff
path: root/ext/date/php_date.c
diff options
context:
space:
mode:
authorDerick Rethans <derick@php.net>2010-12-15 21:45:25 +0000
committerDerick Rethans <derick@php.net>2010-12-15 21:45:25 +0000
commit1cf5713dd355f2b3b9270a61a975a8fcf4d17db6 (patch)
tree5baf7ca4587c516c8305183fae4f5fc5b52fa74d /ext/date/php_date.c
parentf35b89c7c459013ac3c07e149ce9011a21dbd6a4 (diff)
downloadphp-git-1cf5713dd355f2b3b9270a61a975a8fcf4d17db6.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.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 568ba5a99e..57d721bc19 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2797,6 +2797,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);