Bug #14413 [Com]: Passing a Unix timestamp in the constructor doesn't work (BC break)

From: Date: Tue, 18 Sep 2018 21:19:27 +0000
Subject: Bug #14413 [Com]: Passing a Unix timestamp in the constructor doesn't work (BC break)
References: 1  Groups: php.pear.bugs 
Request: Send a blank email to [email protected] to get a copy of this message
Edit report at http://pear.php.net/bugs/bug.php?id=14413&edit=1

 ID:               14413
 Comment by:       weather
 Reported By:      flintweather at gmail dot com
 Summary:          Passing a Unix timestamp in the constructor doesn't
                   work (BC break)
 Status:           Open
 Type:             Bug
 Package:          Date
 Operating System: Irrelevant
 Package Version:  CVS
 PHP Version:      5.2.6
 New Comment:

Patched as of https://github.com/pear/Date/commit/ee6e1ff
It should be BC, still accepting original boolean but now accepting an
args array allowing for overridden defaults.


Previous Comments:
------------------------------------------------------------------------

[2010-08-25 18:55:55] gauthierm

Is this patch ever going to be applied?

If it breaks BC, perhaps it should be the last parameter instead of the
second.

If it is not going to be applied, the docs should be fixed to not say a
timestamp can be 
used in the constructor.

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

[2009-01-01 03:53:48] doconnor

Breaking unit tests in Bug #2378 and Bug #8912

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

[2008-12-07 17:56:33] gauthierm

It's worth noting that PHP's DateTime class accepts UNIX timestamps in
the constructor if they are prefixed with '@'. In this way they
distinguish between ISO-8601 and UNIX timestamps. For example:

$timestamp = '@' . $time;
$date = new DateTime($timestamp);

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

[2008-07-28 09:45:45] gauthierm

Description:
------------
The constructor hands off to setDate() which only parses Unix timestamps
if the second parameter is set correctly. The constructor never passes
the second parameter to setDate() when a Unix timestamp is passed.

Since there is ambiguity between ISO 8601 formatted dates like
int(20080728) and Unix timestamps (int(20080728) is also a Unix time), a
new optional parameter must be passed to the constructor to allow
parsing Unix timestamps.

Test script:
---------------
<?php
require_once 'Date.php';

$date = new Date(time());
echo $date->getDate(DATE_FORMAT_ISO), "\n";

$date = new Date();
echo $date->getDate(DATE_FORMAT_ISO), "\n";
?>

Expected result:
----------------
2008-07-28 10:34:10
2008-07-28 10:34:10

Actual result:
--------------
0000-00-00 00:00:00
2008-07-28 10:34:10

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


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


Thread (1 message)

  • weather
« previous php.pear.bugs (#11426) next »