mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +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 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
|
* @return true
|
||||||
* @alias intlcal_set_first_day_of_week
|
* @alias intlcal_set_first_day_of_week
|
||||||
|
|
|
@ -408,6 +408,58 @@ U_CFUNC PHP_FUNCTION(intlcal_set)
|
||||||
RETURN_TRUE;
|
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)
|
U_CFUNC PHP_FUNCTION(intlcal_roll)
|
||||||
{
|
{
|
||||||
zval *zvalue;
|
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