mirror of
https://github.com/dg/dibi.git
synced 2025-08-05 05:37:39 +02:00
DibiDateTime: works with UNIX timestamps bigger than 32bits
This commit is contained in:
@@ -22,9 +22,11 @@ class DibiDateTime extends DateTime
|
|||||||
public function __construct($time = 'now', DateTimeZone $timezone = NULL)
|
public function __construct($time = 'now', DateTimeZone $timezone = NULL)
|
||||||
{
|
{
|
||||||
if (is_numeric($time)) {
|
if (is_numeric($time)) {
|
||||||
$time = date('Y-m-d H:i:s', $time);
|
$tmp = new self('@' . $time);
|
||||||
}
|
$tmp->setTimeZone($timezone ? $timezone : new DateTimeZone(date_default_timezone_get()));
|
||||||
if ($timezone === NULL) {
|
return $tmp;
|
||||||
|
|
||||||
|
} elseif ($timezone === NULL) {
|
||||||
parent::__construct($time);
|
parent::__construct($time);
|
||||||
} else {
|
} else {
|
||||||
parent::__construct($time, $timezone);
|
parent::__construct($time, $timezone);
|
||||||
@@ -46,6 +48,28 @@ class DibiDateTime extends DateTime
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setTimestamp($timestamp)
|
||||||
|
{
|
||||||
|
$zone = PHP_VERSION_ID === 50206 ? new \DateTimeZone($this->getTimezone()->getName()) : $this->getTimezone();
|
||||||
|
$this->__construct('@' . $timestamp);
|
||||||
|
$this->setTimeZone($zone);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getTimestamp()
|
||||||
|
{
|
||||||
|
$ts = $this->format('U');
|
||||||
|
return is_float($tmp = $ts * 1) ? $ts : $tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
return $this->format('Y-m-d H:i:s');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function __sleep()
|
public function __sleep()
|
||||||
{
|
{
|
||||||
$zone = $this->getTimezone()->getName();
|
$zone = $this->getTimezone()->getName();
|
||||||
@@ -68,22 +92,4 @@ class DibiDateTime extends DateTime
|
|||||||
unset($this->fix);
|
unset($this->fix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getTimestamp()
|
|
||||||
{
|
|
||||||
return (int) $this->format('U');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function setTimestamp($timestamp)
|
|
||||||
{
|
|
||||||
return $this->__construct(date('Y-m-d H:i:s', $timestamp), new DateTimeZone($this->getTimezone()->getName())); // getTimeZone() crashes in PHP 5.2.6
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function __toString()
|
|
||||||
{
|
|
||||||
return $this->format('Y-m-d H:i:s');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user