diff options
author | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-01-22 00:13:29 +0100 |
---|---|---|
committer | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-01-22 19:59:40 +0100 |
commit | 476636841f450cf90c4a2a9516160303f0df3cb7 (patch) | |
tree | 4bbaefeeb14c7f78c0c6aba9818e5fc14c56e201 /ext | |
parent | 3987a31130edcad36b2fff42d13bed66c1f6ba1c (diff) | |
download | php-git-476636841f450cf90c4a2a9516160303f0df3cb7.tar.gz |
Fix #78649 Provide ICU RELATIVE_ constants
Closes GH-5105
Diffstat (limited to 'ext')
-rw-r--r-- | ext/intl/dateformat/dateformat.c | 4 | ||||
-rw-r--r-- | ext/intl/tests/dateformat_format_relative.phpt | 72 |
2 files changed, 76 insertions, 0 deletions
diff --git a/ext/intl/dateformat/dateformat.c b/ext/intl/dateformat/dateformat.c index 79e1a3f492..10d9dde96e 100644 --- a/ext/intl/dateformat/dateformat.c +++ b/ext/intl/dateformat/dateformat.c @@ -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 ); diff --git a/ext/intl/tests/dateformat_format_relative.phpt b/ext/intl/tests/dateformat_format_relative.phpt new file mode 100644 index 0000000000..f8e28220e5 --- /dev/null +++ b/ext/intl/tests/dateformat_format_relative.phpt @@ -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 |