mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
Add IntlCalendar::setDate() and IntlCalendar::setDateTime()
This commit is contained in:
parent
1126232053
commit
f236eb83b4
5 changed files with 123 additions and 0 deletions
|
@ -437,6 +437,10 @@ class IntlCalendar
|
|||
*/
|
||||
public function set(int $year, int $month, int $dayOfMonth = UNKNOWN, int $hour = UNKNOWN, int $minute = UNKNOWN, int $second = UNKNOWN) {} // TODO make return type void
|
||||
|
||||
public function setDate(int $year, int $month, int $dayOfMonth): void {}
|
||||
|
||||
public function setDateTime(int $year, int $month, int $dayOfMonth, int $hour, int $minute, ?int $second = null): void {}
|
||||
|
||||
/**
|
||||
* @return true
|
||||
* @alias intlcal_set_first_day_of_week
|
||||
|
|
|
@ -408,6 +408,58 @@ U_CFUNC PHP_FUNCTION(intlcal_set)
|
|||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
U_CFUNC PHP_METHOD(IntlCalendar, setDate)
|
||||
{
|
||||
zend_long year, month, day;
|
||||
|
||||
CALENDAR_METHOD_INIT_VARS;
|
||||
|
||||
object = getThis();
|
||||
|
||||
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), object, "Olll",
|
||||
&object, Calendar_ce_ptr, &year, &month, &day) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(year, 1);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(month, 2);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(day, 3);
|
||||
|
||||
CALENDAR_METHOD_FETCH_OBJECT;
|
||||
|
||||
co->ucal->set((int32_t) year, (int32_t) month, (int32_t) day);
|
||||
}
|
||||
|
||||
U_CFUNC PHP_METHOD(IntlCalendar, setDateTime)
|
||||
{
|
||||
zend_long year, month, day, hour, minute, second = 0;
|
||||
bool second_is_null = true;
|
||||
|
||||
CALENDAR_METHOD_INIT_VARS;
|
||||
|
||||
object = getThis();
|
||||
|
||||
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), object, "Olllll|l!",
|
||||
&object, Calendar_ce_ptr, &year, &month, &day, &hour, &minute, &second, &second_is_null) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(year, 1);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(month, 2);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(day, 3);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(hour, 4);
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(minute, 5);
|
||||
|
||||
CALENDAR_METHOD_FETCH_OBJECT;
|
||||
|
||||
if (second_is_null) {
|
||||
co->ucal->set((int32_t) year, (int32_t) month, (int32_t) day, (int32_t) hour, (int32_t) minute);
|
||||
} else {
|
||||
ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE(second, 6);
|
||||
co->ucal->set((int32_t) year, (int32_t) month, (int32_t) day, (int32_t) hour, (int32_t) minute, (int32_t) second);
|
||||
}
|
||||
}
|
||||
|
||||
U_CFUNC PHP_FUNCTION(intlcal_roll)
|
||||
{
|
||||
zval *zvalue;
|
||||
|
|
30
ext/intl/tests/calendar_isSet_empty_time.phpt
Normal file
30
ext/intl/tests/calendar_isSet_empty_time.phpt
Normal file
|
@ -0,0 +1,30 @@
|
|||
--TEST--
|
||||
Test IntlCalendar::setDateTime()
|
||||
--EXTENSIONS--
|
||||
intl
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$intlcal = IntlCalendar::createInstance('UTC');
|
||||
$intlcal->clear();
|
||||
|
||||
$intlcal->set(2012, 1, 29, 23, 58);
|
||||
var_dump($intlcal->isSet(IntlCalendar::FIELD_SECOND));
|
||||
var_dump($intlcal->get(IntlCalendar::FIELD_MINUTE));
|
||||
var_dump($intlcal->isSet(IntlCalendar::FIELD_SECOND));
|
||||
|
||||
$intlcal->clear();
|
||||
|
||||
$intlcal->setDateTime(2012, 1, 29, 23, 58);
|
||||
var_dump($intlcal->isSet(IntlCalendar::FIELD_SECOND));
|
||||
var_dump($intlcal->get(IntlCalendar::FIELD_MINUTE));
|
||||
var_dump($intlcal->isSet(IntlCalendar::FIELD_SECOND));
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
int(58)
|
||||
bool(true)
|
||||
bool(false)
|
||||
int(58)
|
||||
bool(true)
|
17
ext/intl/tests/calendar_set_date.phpt
Normal file
17
ext/intl/tests/calendar_set_date.phpt
Normal file
|
@ -0,0 +1,17 @@
|
|||
--TEST--
|
||||
Test IntlCalendar::setDate()
|
||||
--EXTENSIONS--
|
||||
intl
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$intlcal = IntlCalendar::createInstance('UTC');
|
||||
$intlcal->clear();
|
||||
|
||||
$intlcal->setDate(2012, 1, 29);
|
||||
var_dump($intlcal->getTime(), strtotime('2012-02-29 00:00:00 +0000') * 1000.);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
float(1330473600000)
|
||||
float(1330473600000)
|
20
ext/intl/tests/calendar_set_date_time.phpt
Normal file
20
ext/intl/tests/calendar_set_date_time.phpt
Normal file
|
@ -0,0 +1,20 @@
|
|||
--TEST--
|
||||
Test IntlCalendar::setDateTime()
|
||||
--EXTENSIONS--
|
||||
intl
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
//two minutes to midnight!
|
||||
$intlcal->setDateTime(2012, 1, 29, 23, 58);
|
||||
var_dump($intlcal->getTime(), strtotime('2012-02-29 23:58:00 +0000') * 1000.);
|
||||
|
||||
$intlcal->setDateTime(2012, 1, 29, 23, 58, 31);
|
||||
var_dump($intlcal->getTime(), strtotime('2012-02-29 23:58:31 +0000') * 1000.);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
float(1330559880000)
|
||||
float(1330559880000)
|
||||
float(1330559911000)
|
||||
float(1330559911000)
|
Loading…
Add table
Add a link
Reference in a new issue