mirror of
https://github.com/php/php-src.git
synced 2025-08-17 14:38:49 +02:00
Fixed bug #75113: Added DatePeriod::getRecurrences() method.
This commit is contained in:
parent
f167b06d4c
commit
6eb83a63e1
4 changed files with 46 additions and 4 deletions
10
NEWS
10
NEWS
|
@ -15,13 +15,15 @@ PHP NEWS
|
||||||
. Fixed bug #77742 (bcpow() implementation related to gcc compiler
|
. Fixed bug #77742 (bcpow() implementation related to gcc compiler
|
||||||
optimization). (Nikita)
|
optimization). (Nikita)
|
||||||
|
|
||||||
- FPM:
|
|
||||||
. Fixed bug #77677 (FPM fails to build on AIX due to missing WCOREDUMP).
|
|
||||||
(Kevin Adler)
|
|
||||||
|
|
||||||
- Date:
|
- Date:
|
||||||
. Fixed bug #50020 (DateInterval:createDateFromString() silently fails).
|
. Fixed bug #50020 (DateInterval:createDateFromString() silently fails).
|
||||||
(Derick)
|
(Derick)
|
||||||
|
. Fixed bug #75113 (Added DatePeriod::getRecurrences() method). (Ignace
|
||||||
|
Nyamagana Butera)
|
||||||
|
|
||||||
|
- FPM:
|
||||||
|
. Fixed bug #77677 (FPM fails to build on AIX due to missing WCOREDUMP).
|
||||||
|
(Kevin Adler)
|
||||||
|
|
||||||
- GD:
|
- GD:
|
||||||
. Fixed bug #77700 (Writing truecolor images as GIF ignores interlace flag).
|
. Fixed bug #77700 (Writing truecolor images as GIF ignores interlace flag).
|
||||||
|
|
|
@ -543,6 +543,7 @@ const zend_function_entry date_funcs_period[] = {
|
||||||
PHP_ME(DatePeriod, getStartDate, NULL, ZEND_ACC_PUBLIC)
|
PHP_ME(DatePeriod, getStartDate, NULL, ZEND_ACC_PUBLIC)
|
||||||
PHP_ME(DatePeriod, getEndDate, NULL, ZEND_ACC_PUBLIC)
|
PHP_ME(DatePeriod, getEndDate, NULL, ZEND_ACC_PUBLIC)
|
||||||
PHP_ME(DatePeriod, getDateInterval, NULL, ZEND_ACC_PUBLIC)
|
PHP_ME(DatePeriod, getDateInterval, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(DatePeriod, getRecurrences, NULL, ZEND_ACC_PUBLIC)
|
||||||
PHP_FE_END
|
PHP_FE_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4736,6 +4737,28 @@ PHP_METHOD(DatePeriod, getDateInterval)
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
/* {{{ proto int DatePeriod::getRecurrences()
|
||||||
|
Get recurrences.
|
||||||
|
*/
|
||||||
|
PHP_METHOD(DatePeriod, getRecurrences)
|
||||||
|
{
|
||||||
|
php_period_obj *dpobj;
|
||||||
|
php_date_obj *dateobj;
|
||||||
|
|
||||||
|
if (zend_parse_parameters_none() == FAILURE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dpobj = Z_PHPPERIOD_P(ZEND_THIS);
|
||||||
|
|
||||||
|
if (0 == dpobj->recurrences - dpobj->include_start_date) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_LONG(dpobj->recurrences - dpobj->include_start_date);
|
||||||
|
}
|
||||||
|
/* }}} */
|
||||||
|
|
||||||
static int check_id_allowed(char *id, zend_long what) /* {{{ */
|
static int check_id_allowed(char *id, zend_long what) /* {{{ */
|
||||||
{
|
{
|
||||||
if (what & PHP_DATE_TIMEZONE_GROUP_AFRICA && strncasecmp(id, "Africa/", 7) == 0) return 1;
|
if (what & PHP_DATE_TIMEZONE_GROUP_AFRICA && strncasecmp(id, "Africa/", 7) == 0) return 1;
|
||||||
|
|
|
@ -112,6 +112,7 @@ PHP_METHOD(DatePeriod, __set_state);
|
||||||
PHP_METHOD(DatePeriod, getStartDate);
|
PHP_METHOD(DatePeriod, getStartDate);
|
||||||
PHP_METHOD(DatePeriod, getEndDate);
|
PHP_METHOD(DatePeriod, getEndDate);
|
||||||
PHP_METHOD(DatePeriod, getDateInterval);
|
PHP_METHOD(DatePeriod, getDateInterval);
|
||||||
|
PHP_METHOD(DatePeriod, getRecurrences);
|
||||||
|
|
||||||
/* Options and Configuration */
|
/* Options and Configuration */
|
||||||
PHP_FUNCTION(date_default_timezone_set);
|
PHP_FUNCTION(date_default_timezone_set);
|
||||||
|
|
|
@ -8,6 +8,7 @@ $start = new DateTime('2000-01-01 00:00:00', new DateTimeZone('Europe/Berlin'));
|
||||||
$end = new DateTime('2000-01-31 00:00:00', new DateTimeZone('UTC'));
|
$end = new DateTime('2000-01-31 00:00:00', new DateTimeZone('UTC'));
|
||||||
$interval = new DateInterval('P1D');
|
$interval = new DateInterval('P1D');
|
||||||
$period = new DatePeriod($start, $interval, $end);
|
$period = new DatePeriod($start, $interval, $end);
|
||||||
|
$recurrences = 4;
|
||||||
|
|
||||||
var_dump($period->getStartDate()->format('Y-m-d H:i:s'));
|
var_dump($period->getStartDate()->format('Y-m-d H:i:s'));
|
||||||
var_dump($period->getStartDate()->getTimeZone()->getName());
|
var_dump($period->getStartDate()->getTimeZone()->getName());
|
||||||
|
@ -16,6 +17,17 @@ var_dump($period->getEndDate()->format('Y-m-d H:i:s'));
|
||||||
var_dump($period->getEndDate()->getTimeZone()->getName());
|
var_dump($period->getEndDate()->getTimeZone()->getName());
|
||||||
|
|
||||||
var_dump($period->getDateInterval()->format('%R%y-%m-%d-%h-%i-%s'));
|
var_dump($period->getDateInterval()->format('%R%y-%m-%d-%h-%i-%s'));
|
||||||
|
var_dump($period->getRecurrences());
|
||||||
|
|
||||||
|
$periodWithRecurrences = new DatePeriod($start, $interval, $recurrences);
|
||||||
|
|
||||||
|
var_dump($periodWithRecurrences->getRecurrences());
|
||||||
|
var_dump($periodWithRecurrences->getEndDate());
|
||||||
|
|
||||||
|
$periodWithRecurrencesWithoutStart = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
|
||||||
|
|
||||||
|
var_dump($periodWithRecurrences->getRecurrences());
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
string(19) "2000-01-01 00:00:00"
|
string(19) "2000-01-01 00:00:00"
|
||||||
|
@ -23,3 +35,7 @@ string(13) "Europe/Berlin"
|
||||||
string(19) "2000-01-31 00:00:00"
|
string(19) "2000-01-31 00:00:00"
|
||||||
string(3) "UTC"
|
string(3) "UTC"
|
||||||
string(12) "+0-0-1-0-0-0"
|
string(12) "+0-0-1-0-0-0"
|
||||||
|
NULL
|
||||||
|
int(4)
|
||||||
|
NULL
|
||||||
|
int(4)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue