<?php
namespace Zend\Stdlib {
use DateTimeZone;
class DateTime extends \DateTime
{
public function __construct($time = 'now', \DateTimeZone $timezone = null)
{
// workaround not required for PHP 5.3.7 or newer
if(version_compare(PHP_VERSION, '5.3.7','>=')){
if($timezone) {
return parent::__construct($time, $timezone);
} else {
return parent::__construct($time);
}
}
// Check if using relative constructs
if(!stristr($time, 'last') && !stristr($time, 'first')){
if($timezone) {
return parent::__construct($time, $timezone);
} else {
return parent::__construct($time);
}
}
// 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('first day of feb 2010');
var_dump($dt);
$dt->add($interval);
var_dump($dt);
}
Deprecated: Return type of Zend\Stdlib\DateTime::modify($modify) should either be compatible with DateTime::modify(string $modifier): DateTime|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/rVXhj on line 41
object(Zend\Stdlib\DateTime)#2 (3) {
["date"]=>
string(26) "2010-02-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
object(Zend\Stdlib\DateTime)#2 (3) {
["date"]=>
string(26) "2010-02-02 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() expects parameter 2 to be DateTimeZone, null given' in /in/rVXhj:31
Stack trace:
#0 /in/rVXhj(31): DateTime->__construct('now', NULL)
#1 /in/rVXhj(67): Zend\Stdlib\DateTime->__construct('first day of fe...')
#2 {main}
thrown in /in/rVXhj on line 31
Process exited with code 255.