Bug #53662 [Bgs]: strtotime() returns inconsistent output on 64 bit systems
| From: | aharvey@php.net | Date: | Thu, 06 Jan 2011 02:49:19 +0000 |
| Subject: | Bug #53662 [Bgs]: strtotime() returns inconsistent output on 64 bit systems | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-157650@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=53662&edit=1
ID: 53662
Updated by: aharvey@php.net
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:
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).
Previous Comments:
------------------------------------------------------------------------
[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] rasmus@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" ("0000-00-00 00:00:00") as well as dates
outside the
traditional 32 date range.
strtotime("0000-00-00 00:00:00") returns FALSE on a 32 bit system.
strtotime("0000-00-00 00:00:00") returns -62169955200 on a 64 bit
system.
Test script:
---------------
<?php
var_export(strtotime("0000-00-00 00:00:00"));
?>
Expected result:
----------------
On 64 bit systems, I would expect strtotime("0000-00-00 00:00:00") to
return
FALSE as it does on 32 bit systems.
Actual result:
--------------
On 64 bit systems, strtotime("0000-00-00 00:00:00") returns
-62169955200.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53662&edit=1