Bug #78432 [Opn]: IntlDateFormatter not parsing from given format for some locales
| From: | justmoen at gmail dot com | Date: | Wed, 21 Aug 2019 08:10:22 +0000 |
| Subject: | Bug #78432 [Opn]: IntlDateFormatter not parsing from given format for some locales | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-222334@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78432&edit=1
ID: 78432
User updated by: justmoen at gmail dot com
Reported by: justmoen at gmail dot com
-Summary: IntlDateFormatter not parsing from given format
+Summary: IntlDateFormatter not parsing from given format for
some locales
Status: Open
Type: Bug
Package: Date/time related
Operating System: Ubuntu 16.04
PHP Version: 7.2.21
Block user comment: N
Private report: N
New Comment:
update summary
Previous Comments:
------------------------------------------------------------------------
[2019-08-21 07:53:27] justmoen at gmail dot com
Description:
------------
IntlDateFormatter appears to treat the provided pattern parameter 'MM/dd/yyyy h:mm: a' as
invalid based on the given culture. The problem occurs after a change in ICU 64.1 to no longer
accept am/pm for cultures with the languages 'es', 'sv' and several others.
Should the IntlDateFormatter be able to parse from a standard pattern independent of the set locale?
Test script:
---------------
<?php
$date = '08/08/2019 06:00 pm';
$cultureZones = [
'en_US' => 'US/Central',
'es_US' => 'US/Central',
'fr_CA' => 'Canada/Central',
'en_CA' => 'Canada/Central',
'es_ES' => 'Europe/Madrid',
'en_GB' => 'Europe/London',
'es_MX' => 'America/Mexico_City',
'fr_FR' => 'Europe/Paris',
'sv_SE' => 'Europe/Stockholm'
];
foreach($cultureZones as $culture => $timezone) {
$formatter = new \IntlDateFormatter($culture, 2, 2, $timezone, 1, 'MM/dd/yyyy h:mm a');
echo $culture." (".$timezone.") returned: ".var_export(
$formatter->parse($date), true )."\n";
}
Expected result:
----------------
en_US (US/Central) returned: 1565305200
es_US (US/Central) returned: 1565305200
fr_CA (Canada/Central) returned: 1565305200
en_CA (Canada/Central) returned: 1565305200
es_ES (Europe/Madrid) returned: 1565280000
en_GB (Europe/London) returned: 1565283600
es_MX (America/Mexico_City) returned: 1565305200
fr_FR (Europe/Paris) returned: 1565280000
sv_SE (Europe/Stockholm) returned: 1565280000
Actual result:
--------------
en_US (US/Central) returned: 1565305200
es_US (US/Central) returned: false
fr_CA (Canada/Central) returned: 1565305200
en_CA (Canada/Central) returned: 1565305200
es_ES (Europe/Madrid) returned: false
en_GB (Europe/London) returned: 1565283600
es_MX (America/Mexico_City) returned: false
fr_FR (Europe/Paris) returned: 1565280000
sv_SE (Europe/Stockholm) returned: false
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78432&edit=1