Fix #78649 Provide ICU RELATIVE_ constants

Closes GH-5105
This commit is contained in:
Máté Kocsis 2020-01-22 00:13:29 +01:00
parent 3987a31130
commit 476636841f
No known key found for this signature in database
GPG Key ID: FD055E41728BF310
2 changed files with 76 additions and 0 deletions

View File

@ -44,6 +44,10 @@ void dateformat_register_constants( INIT_FUNC_ARGS )
DATEFORMATTER_EXPOSE_CLASS_CONST( MEDIUM );
DATEFORMATTER_EXPOSE_CLASS_CONST( SHORT );
DATEFORMATTER_EXPOSE_CLASS_CONST( NONE );
DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_FULL", UDAT_FULL_RELATIVE );
DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_LONG", UDAT_LONG_RELATIVE );
DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_MEDIUM", UDAT_MEDIUM_RELATIVE );
DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_SHORT", UDAT_SHORT_RELATIVE );
/*
DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "GREGORIAN", DATEF_GREGORIAN );

View File

@ -0,0 +1,72 @@
--TEST--
datefmt_format_code() with relative formats
--SKIPIF--
<?php if (!extension_loaded("intl")) print "skip"; ?>
--FILE--
<?php
printFormat(IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::NONE, getYesterday());
printFormat(IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::NONE, getYesterday());
printFormat(IntlDateFormatter::RELATIVE_MEDIUM, IntlDateFormatter::NONE, getYesterday());
printFormat(IntlDateFormatter::RELATIVE_SHORT, IntlDateFormatter::NONE, getYesterday());
printFormat(IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::NONE, getToday());
printFormat(IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::NONE, getToday());
printFormat(IntlDateFormatter::RELATIVE_MEDIUM, IntlDateFormatter::NONE, getToday());
printFormat(IntlDateFormatter::RELATIVE_SHORT, IntlDateFormatter::NONE, getToday());
printFormat(IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::NONE, getTomorrow());
printFormat(IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::NONE, getTomorrow());
printFormat(IntlDateFormatter::RELATIVE_MEDIUM, IntlDateFormatter::NONE, getTomorrow());
printFormat(IntlDateFormatter::RELATIVE_SHORT, IntlDateFormatter::NONE, getTomorrow());
printFormat(IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::NONE, getDayInPast());
printFormat(IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::NONE, getDayInPast());
printFormat(IntlDateFormatter::RELATIVE_MEDIUM, IntlDateFormatter::NONE, getDayInPast());
printFormat(IntlDateFormatter::RELATIVE_SHORT, IntlDateFormatter::NONE, getDayInPast());
function printFormat(int $dateFormat, int $timeFormat, DateTimeImmutable $time) {
$formatter = new IntlDateFormatter(
"en_US",
$dateFormat,
$timeFormat,
"America/Los_Angeles",
IntlDateFormatter::GREGORIAN
);
echo $formatter->format($time) . "\n";
}
function getToday(): DateTimeImmutable {
return new DateTimeImmutable();
}
function getYesterday(): DateTimeImmutable {
return new DateTimeImmutable("-1 day");
}
function getTomorrow(): DateTimeImmutable {
return new DateTimeImmutable("+1 day");
}
function getDayInPast(): DateTimeImmutable {
return new DateTimeImmutable("2020-01-20 20:20:20", new DateTimeZone("UTC"));
}
--EXPECT--
yesterday
yesterday
yesterday
yesterday
today
today
today
today
tomorrow
tomorrow
tomorrow
tomorrow
Monday, January 20, 2020
January 20, 2020
Jan 20, 2020
1/20/20