mirror of
https://github.com/php/php-src.git
synced 2024-09-23 19:07:26 +00:00
Merge branch 'PHP-5.5' into PHP-5.6
This commit is contained in:
commit
110b7dcfb8
@ -3137,33 +3137,16 @@ static void php_date_add(zval *object, zval *interval, zval *return_value TSRMLS
|
||||
{
|
||||
php_date_obj *dateobj;
|
||||
php_interval_obj *intobj;
|
||||
int bias = 1;
|
||||
timelib_time *new_time;
|
||||
|
||||
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
||||
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
||||
intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC);
|
||||
DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval);
|
||||
|
||||
if (intobj->diff->have_weekday_relative || intobj->diff->have_special_relative) {
|
||||
memcpy(&dateobj->time->relative, intobj->diff, sizeof(struct timelib_rel_time));
|
||||
} else {
|
||||
if (intobj->diff->invert) {
|
||||
bias = -1;
|
||||
}
|
||||
memset(&dateobj->time->relative, 0, sizeof(struct timelib_rel_time));
|
||||
dateobj->time->relative.y = intobj->diff->y * bias;
|
||||
dateobj->time->relative.m = intobj->diff->m * bias;
|
||||
dateobj->time->relative.d = intobj->diff->d * bias;
|
||||
dateobj->time->relative.h = intobj->diff->h * bias;
|
||||
dateobj->time->relative.i = intobj->diff->i * bias;
|
||||
dateobj->time->relative.s = intobj->diff->s * bias;
|
||||
}
|
||||
dateobj->time->have_relative = 1;
|
||||
dateobj->time->sse_uptodate = 0;
|
||||
|
||||
timelib_update_ts(dateobj->time, NULL);
|
||||
timelib_update_from_sse(dateobj->time);
|
||||
dateobj->time->have_relative = 0;
|
||||
new_time = timelib_add(dateobj->time, intobj->diff);
|
||||
timelib_time_dtor(dateobj->time);
|
||||
dateobj->time = new_time;
|
||||
}
|
||||
|
||||
/* {{{ proto DateTime date_add(DateTime object, DateInterval interval)
|
||||
@ -3204,7 +3187,7 @@ static void php_date_sub(zval *object, zval *interval, zval *return_value TSRMLS
|
||||
{
|
||||
php_date_obj *dateobj;
|
||||
php_interval_obj *intobj;
|
||||
int bias = 1;
|
||||
timelib_time *new_time;
|
||||
|
||||
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
||||
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
||||
@ -3216,24 +3199,9 @@ static void php_date_sub(zval *object, zval *interval, zval *return_value TSRMLS
|
||||
return;
|
||||
}
|
||||
|
||||
if (intobj->diff->invert) {
|
||||
bias = -1;
|
||||
}
|
||||
|
||||
memset(&dateobj->time->relative, 0, sizeof(struct timelib_rel_time));
|
||||
dateobj->time->relative.y = 0 - (intobj->diff->y * bias);
|
||||
dateobj->time->relative.m = 0 - (intobj->diff->m * bias);
|
||||
dateobj->time->relative.d = 0 - (intobj->diff->d * bias);
|
||||
dateobj->time->relative.h = 0 - (intobj->diff->h * bias);
|
||||
dateobj->time->relative.i = 0 - (intobj->diff->i * bias);
|
||||
dateobj->time->relative.s = 0 - (intobj->diff->s * bias);
|
||||
dateobj->time->have_relative = 1;
|
||||
dateobj->time->sse_uptodate = 0;
|
||||
|
||||
timelib_update_ts(dateobj->time, NULL);
|
||||
timelib_update_from_sse(dateobj->time);
|
||||
|
||||
dateobj->time->have_relative = 0;
|
||||
new_time = timelib_sub(dateobj->time, intobj->diff);
|
||||
timelib_time_dtor(dateobj->time);
|
||||
dateobj->time = new_time;
|
||||
}
|
||||
|
||||
/* {{{ proto DateTime date_sub(DateTime object, DateInterval interval)
|
||||
|
Loading…
Reference in New Issue
Block a user