From:             
Operating system: Ubuntu 11.04
PHP version:      5.3.5
Package:          Date/time related
Bug Type:         Bug
Bug description:unexpected strtotime() behavior with unix timestamps

Description:
------------
I'm working on a payment processor which unfortunately has to take several
types of date input, as a result I need to test if a date I'm being passed
is already a unix timestamp. For the most part strtotime() will return
false when passed a timestamp. There are a few edge cases where it will
return another timestamp sometime after year 2400 or before 2000. If this
is actually the expected behavior it might be worthwhile to throw a warning
in the documentation about passing strtotime() unix timestamps

Test script:
---------------
$errors = 0;

$end_date = strtotime('January 1st 2020');

$start_date = strtotime('January 1st 2001');

$bad_years = array();

while ($start_date < $end_date){

        if (strtotime($start_date) !== false){

                echo date ('Y-m-d', $start_date) . ' generates ' . 
strtotime($start_date)
.  '  ' . date('Y-m-d', strtotime($start_date)) . "\n";

                $bad_years[] = date('Y', strtotime($start_date));

                $errors++;

        }

        $start_date += 86400;

}

print_r(array_unique($bad_years));

echo "$errors errors generated\n";

Expected result:
----------------
sam.heller@sam:/var/www/development/api/app/scripts$ php test.php 

Array

(

)

0 errors generated

sam.heller@sam:/var/www/development/api/app/scripts$ 



Actual result:
--------------
sam.heller@sam:/var/www/development/api/app/scripts$ php test.php 

2001-09-14 generates 51442009244  3600-02-18

2001-09-15 generates -62163017947  0000-02-18

2001-09-25 generates 64064790099  4000-02-18

2001-09-26 generates -49540237092  0400-02-18

...

...

...

2019-05-22 generates -24294654070  1200-02-18

2019-05-23 generates 177669838738  7600-02-18

2019-06-02 generates -11671873215  1600-02-18

2019-06-03 generates 190292619593  8000-02-18

Array

(

    [0] => 3600

    [1] => 0000

    [2] => 4000

    [3] => 0400

    [4] => 6800

    [5] => 0800

    [6] => 7200

    [8] => 1200

    [9] => 7600

    [11] => 8000

    [12] => 4400

    [14] => 8400

    [15] => 4800

    [17] => 5200

    [18] => 1600

    [20] => 2000

    [22] => 2400

    [23] => 8800

    [25] => 9200

    [26] => 5600

    [28] => 9600

    [29] => 6000

    [31] => 6400

    [32] => 2800

    [34] => 3200

)

1007 errors generated

sam.heller@sam:/var/www/development/api/app/scripts$

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

Reply via email to