<?php
namespace Zend\Stdlib {
use DateTimeZone;
/**
* DateTime
*
* An extension of the \DateTime object.
*/
class DateTime extends \DateTime
{
public function __construct($time = 'now', $timezone = null)
{
// workaround not required for PHP 5.3.7 or newer
if(version_compare(PHP_VERSION, '5.3.7','>=')){
return parent::__construct($time, $timezone);
}
// Check if using relative constructs
if(!stristr($time, 'last') && !stristr($time, 'first')){
return parent::__construct($time, $timezone);
}
// Use current time with constructor to prevent setting 'first_last_day_of' flag
parent::__construct('now', $timezone);
// Set the timestamp by relying on strtotime and avoiding setting the
// internal 'first_last_day_of' flag of DateTime object.
$this->setTimestamp(
strtotime($time, $this->getTimestamp())
);
return $this;
}
public function modify($modify)
{
// Workaround not required for PHP 5.3.7 or newer
if(version_compare(PHP_VERSION, '5.3.7','>=')){
return parent::modify($modify);
}
// Check if using relative constructs
if(!stristr($modify, 'last') && !stristr($modify, 'first')){
return parent::modify($modify);
}
// Set the timestamp by relying on strtotime and avoiding setting the
// internal 'first_last_day_of' flag of DateTime object.
$parsedTimestamp = strtotime($modify, $this->getTimestamp());
if ($parsedTimestamp === false) {
return false; // something went wrong parsing the date
}
$this->setTimestamp($parsedTimestamp);
return $this;
}
}
}
$interval = new DateInterval('P1D');
$dt = new \DateTime('2012-05-05');
var_dump($dt);
$dt->add($interval);
var_dump($dt);
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).