parse result is limited to the integer range
| Bug #50590 | IntlDateFormatter::parse result is limited to the integer range | ||||
|---|---|---|---|---|---|
| Submitted: | 2009-12-28 12:46 UTC | Modified: | 2010-09-01 22:53 UTC | ||
| From: | a dot farhadi at gmail dot com | Assigned: | stas (profile) | ||
| Status: | Closed | Package: | I18N and L10N related | ||
| PHP Version: | 5.3.1 | OS: | Ubuntu | ||
| Private report: | No | CVE-ID: | None | ||
[2009-12-28 12:46 UTC] a dot farhadi at gmail dot com
Description:
------------
The result of IntlDateFormatter::parse is integer and is limited to the integer range. (i.e. IntlDateFormatter::parse returns The least integer value (e.g. -2147483648 in 32-bit Platforms) when the result is out of the integer range.)
Reproduce code:
---------------
$fmt = new IntlDateFormatter("en_US", IntlDateFormatter::FULL, IntlDateFormatter::FULL);
var_dump($fmt->parse("Wednesday, January 20, 2038 3:14:07 AM GMT"));
Expected result:
----------------
float(2147570047)
Actual result:
--------------
int(-2147483648)
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2010-06-20 23:55 UTC] felipe@php.net
-Status: Open +Status: Assigned -Assigned To: +Assigned To: stas
[2010-06-21 01:42 UTC] stas@php.net
[2010-06-21 09:59 UTC] a dot farhadi at gmail dot com
Actually what I want to do is to convert dates between different calendars and to do so I'm using the returned timestamp with IntlDateFormatter::format method as follow: $df_persian = new IntlDateFormatter('en@calendar=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::GREGORIAN, 'yyyy-MM-dd'); $df_gregorian = new IntlDateFormatter('en', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::GREGORIAN, 'yyyy-MM-dd'); echo $df_gregorian->format($df_persian->parse('1388-03-31')); Hopefully, format method accepts float values as argument and the only problem is parse method which doesn't return past-2038 timestamps. And by the way float precision loss wouldn't be a problem at least for timestamps up to 14 decimal digits.[2010-09-01 22:53 UTC] stas@php.net
-Status: Assigned +Status: Closed
[2010-09-01 22:53 UTC] stas@php.net