[PHP-BUG] Bug #53662 [NEW]: strtotime() returns inconsistent output on 64 bit systems
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
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
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