mirror of
https://github.com/php/php-src.git
synced 2024-09-24 03:17: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_date_obj *dateobj;
|
||||||
php_interval_obj *intobj;
|
php_interval_obj *intobj;
|
||||||
int bias = 1;
|
timelib_time *new_time;
|
||||||
|
|
||||||
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
||||||
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
||||||
intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC);
|
intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC);
|
||||||
DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval);
|
DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval);
|
||||||
|
|
||||||
if (intobj->diff->have_weekday_relative || intobj->diff->have_special_relative) {
|
new_time = timelib_add(dateobj->time, intobj->diff);
|
||||||
memcpy(&dateobj->time->relative, intobj->diff, sizeof(struct timelib_rel_time));
|
timelib_time_dtor(dateobj->time);
|
||||||
} else {
|
dateobj->time = new_time;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* {{{ proto DateTime date_add(DateTime object, DateInterval interval)
|
/* {{{ 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_date_obj *dateobj;
|
||||||
php_interval_obj *intobj;
|
php_interval_obj *intobj;
|
||||||
int bias = 1;
|
timelib_time *new_time;
|
||||||
|
|
||||||
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
|
||||||
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
|
||||||
@ -3216,24 +3199,9 @@ static void php_date_sub(zval *object, zval *interval, zval *return_value TSRMLS
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intobj->diff->invert) {
|
new_time = timelib_sub(dateobj->time, intobj->diff);
|
||||||
bias = -1;
|
timelib_time_dtor(dateobj->time);
|
||||||
}
|
dateobj->time = new_time;
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* {{{ proto DateTime date_sub(DateTime object, DateInterval interval)
|
/* {{{ proto DateTime date_sub(DateTime object, DateInterval interval)
|
||||||
|
Loading…
Reference in New Issue
Block a user