Edit report at http://bugs.php.net/bug.php?id=50590&edit=1

 ID:                 50590
 Updated by:         [email protected]
 Reported by:        a dot farhadi at gmail dot com
 Summary:            IntlDateFormatter::parse result is limited to the
                     integer range
-Status:             Assigned
+Status:             Closed
 Type:               Bug
 Package:            I18N and L10N related
 Operating System:   Ubuntu
 PHP Version:        5.3.1
 Assigned To:        stas
 Block user comment: N

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------
[2010-09-01 22:35:01] [email protected]

Automatic comment from SVN on behalf of stas
Revision: http://svn.php.net/viewvc/?view=revision&revision=302982
Log: Fix bug #50590 - IntlDateFormatter::parse result is limited to the
integer range

------------------------------------------------------------------------
[2010-06-21 09:59:41] 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('e...@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-06-21 01:42:27] [email protected]

Out of curiosity - how do you expect to use past-2038 timestamps? Many
Unix systems won't support those. Do you expect 64-bit value or some
other way? float might be not very good for it due to the precision
loss.

------------------------------------------------------------------------
[2009-12-28 12:46:06] 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)


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=50590&edit=1

Reply via email to