[PHP-BUG] Bug #53662 [NEW]: strtotime() returns inconsistent output on 64 bit systems

2011-01-05 Thread smenjas at gmail dot com
From: 
Operating system: Ubuntu 10.10
PHP version:  5.3.4
Package:  Date/time related
Bug Type: Bug
Bug description:strtotime() returns inconsistent output on 64 bit systems

Description:

---

>From manual page: http://www.php.net/function.strtotime

---

strtotime() produces different output on 32 and 64 bit systems running PHP
5.3.  

This affects the "zero date" ("-00-00 00:00:00") as well as dates
outside the 

traditional 32 date range.



strtotime("-00-00 00:00:00") returns FALSE on a 32 bit system.

strtotime("-00-00 00:00:00") returns -62169955200 on a 64 bit system.

Test script:
---


Expected result:

On 64 bit systems, I would expect strtotime("-00-00 00:00:00") to
return 

FALSE as it does on 32 bit systems.

Actual result:
--
On 64 bit systems, strtotime("-00-00 00:00:00") returns -62169955200.

-- 
Edit bug report at http://bugs.php.net/bug.php?id=53662&edit=1
-- 
Try a snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=53662&r=trysnapshot52
Try a snapshot (PHP 5.3):
http://bugs.php.net/fix.php?id=53662&r=trysnapshot53
Try a snapshot (trunk):  
http://bugs.php.net/fix.php?id=53662&r=trysnapshottrunk
Fixed in SVN:
http://bugs.php.net/fix.php?id=53662&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=53662&r=needdocs
Fixed in release:
http://bugs.php.net/fix.php?id=53662&r=alreadyfixed
Need backtrace:  
http://bugs.php.net/fix.php?id=53662&r=needtrace
Need Reproduce Script:   
http://bugs.php.net/fix.php?id=53662&r=needscript
Try newer version:   
http://bugs.php.net/fix.php?id=53662&r=oldversion
Not developer issue: 
http://bugs.php.net/fix.php?id=53662&r=support
Expected behavior:   
http://bugs.php.net/fix.php?id=53662&r=notwrong
Not enough info: 
http://bugs.php.net/fix.php?id=53662&r=notenoughinfo
Submitted twice: 
http://bugs.php.net/fix.php?id=53662&r=submittedtwice
register_globals:
http://bugs.php.net/fix.php?id=53662&r=globals
PHP 4 support discontinued:  http://bugs.php.net/fix.php?id=53662&r=php4
Daylight Savings:http://bugs.php.net/fix.php?id=53662&r=dst
IIS Stability:   
http://bugs.php.net/fix.php?id=53662&r=isapi
Install GNU Sed: 
http://bugs.php.net/fix.php?id=53662&r=gnused
Floating point limitations:  
http://bugs.php.net/fix.php?id=53662&r=float
No Zend Extensions:  
http://bugs.php.net/fix.php?id=53662&r=nozend
MySQL Configuration Error:   
http://bugs.php.net/fix.php?id=53662&r=mysqlcfg



Bug #53662 [Com]: strtotime() returns inconsistent output on 64 bit systems

2011-01-05 Thread smenjas at gmail dot com
Edit report at http://bugs.php.net/bug.php?id=53662&edit=1

 ID: 53662
 Comment by: smenjas at gmail dot com
 Reported by:smenjas at gmail dot com
 Summary:strtotime() returns inconsistent output on 64 bit
 systems
 Status: Bogus
 Type:   Bug
 Package:Date/time related
 Operating System:   Ubuntu 10.10
 PHP Version:5.3.4
 Block user comment: N
 Private report: N

 New Comment:

Thanks for the incredibly prompt reply.



That makes sense, except that to the best of my knowledge the year zero
is not valid in either the Julian or Gregorian calendars.



I had assumed that strtotime would return FALSE for invalid dates.  On
my 32 bit Ubuntu system, this appears to the case. 
strtotime("2011-01-32") returns FALSE, as opposed to returning the
timestamp for "2011-02-01".



An in depth reading of the documentation did not clarify how strtotime()
should be expected to handle invalid date strings.


Previous Comments:

[2011-01-06 02:57:07] ras...@php.net

This is expected.  On 64-bit systems the date range supported is much
larger than 

on 32-bit systems.

----
[2011-01-06 02:54:19] smenjas at gmail dot com

Description:

---

>From manual page: http://www.php.net/function.strtotime

---

strtotime() produces different output on 32 and 64 bit systems running
PHP 5.3.  

This affects the "zero date" ("-00-00 00:00:00") as well as dates
outside the 

traditional 32 date range.



strtotime("-00-00 00:00:00") returns FALSE on a 32 bit system.

strtotime("-00-00 00:00:00") returns -62169955200 on a 64 bit
system.

Test script:
---


Expected result:

On 64 bit systems, I would expect strtotime("-00-00 00:00:00") to
return 

FALSE as it does on 32 bit systems.

Actual result:
--
On 64 bit systems, strtotime("-00-00 00:00:00") returns
-62169955200.






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


Bug #53662 [Bgs]: strtotime() returns inconsistent output on 64 bit systems

2011-01-05 Thread smenjas at gmail dot com
Edit report at http://bugs.php.net/bug.php?id=53662&edit=1

 ID: 53662
 User updated by:smenjas at gmail dot com
 Reported by:smenjas at gmail dot com
 Summary:strtotime() returns inconsistent output on 64 bit
 systems
 Status: Bogus
 Type:   Bug
 Package:Date/time related
 Operating System:   Ubuntu 10.10
 PHP Version:5.3.4
 Block user comment: N
 Private report: N

 New Comment:

Thanks for taking the time to point that out, and thanks for PHP!


Previous Comments:

[2011-01-06 04:07:00] ras...@php.net

And you get false in 32-bit systems because year 0 falls outside the
supported 

range that fits in a 32-bit signed integer.  The range for 32-bit covers
about 136 

years starting at 1901-12-13 and ending at 2038-01-19


[2011-01-06 03:49:19] ahar...@php.net

PHP uses the version of the proleptic Gregorian calendar specified by

ISO 8601, which does include a year 0 (equivalent to 1 BC in the

traditional Gregorian calendar).


[2011-01-06 03:12:54] smenjas at gmail dot com

Thanks for the incredibly prompt reply.



That makes sense, except that to the best of my knowledge the year zero
is not valid in either the Julian or Gregorian calendars.



I had assumed that strtotime would return FALSE for invalid dates.  On
my 32 bit Ubuntu system, this appears to the case. 
strtotime("2011-01-32") returns FALSE, as opposed to returning the
timestamp for "2011-02-01".



An in depth reading of the documentation did not clarify how strtotime()
should be expected to handle invalid date strings.


[2011-01-06 02:57:07] ras...@php.net

This is expected.  On 64-bit systems the date range supported is much
larger than 

on 32-bit systems.

----
[2011-01-06 02:54:19] smenjas at gmail dot com

Description:

---

>From manual page: http://www.php.net/function.strtotime

---

strtotime() produces different output on 32 and 64 bit systems running
PHP 5.3.  

This affects the "zero date" ("-00-00 00:00:00") as well as dates
outside the 

traditional 32 date range.



strtotime("-00-00 00:00:00") returns FALSE on a 32 bit system.

strtotime("-00-00 00:00:00") returns -62169955200 on a 64 bit
system.

Test script:
---


Expected result:

On 64 bit systems, I would expect strtotime("-00-00 00:00:00") to
return 

FALSE as it does on 32 bit systems.

Actual result:
--
On 64 bit systems, strtotime("-00-00 00:00:00") returns
-62169955200.






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