77 lines
1.6 KiB
PHP
77 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* ActionScheduler DateTime class.
|
||
|
*
|
||
|
* This is a custom extension to DateTime that
|
||
|
*/
|
||
|
class ActionScheduler_DateTime extends DateTime {
|
||
|
|
||
|
/**
|
||
|
* UTC offset.
|
||
|
*
|
||
|
* Only used when a timezone is not set. When a timezone string is
|
||
|
* used, this will be set to 0.
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
protected $utcOffset = 0;
|
||
|
|
||
|
/**
|
||
|
* Get the unix timestamp of the current object.
|
||
|
*
|
||
|
* Missing in PHP 5.2 so just here so it can be supported consistently.
|
||
|
*
|
||
|
* @return int
|
||
|
*/
|
||
|
public function getTimestamp() {
|
||
|
return method_exists( 'DateTime', 'getTimestamp' ) ? parent::getTimestamp() : $this->format( 'U' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set the UTC offset.
|
||
|
*
|
||
|
* This represents a fixed offset instead of a timezone setting.
|
||
|
*
|
||
|
* @param $offset
|
||
|
*/
|
||
|
public function setUtcOffset( $offset ) {
|
||
|
$this->utcOffset = intval( $offset );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the timezone offset.
|
||
|
*
|
||
|
* @return int
|
||
|
* @link http://php.net/manual/en/datetime.getoffset.php
|
||
|
*/
|
||
|
public function getOffset() {
|
||
|
return $this->utcOffset ? $this->utcOffset : parent::getOffset();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set the TimeZone associated with the DateTime
|
||
|
*
|
||
|
* @param DateTimeZone $timezone
|
||
|
*
|
||
|
* @return static
|
||
|
* @link http://php.net/manual/en/datetime.settimezone.php
|
||
|
*/
|
||
|
public function setTimezone( $timezone ) {
|
||
|
$this->utcOffset = 0;
|
||
|
parent::setTimezone( $timezone );
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the timestamp with the WordPress timezone offset added or subtracted.
|
||
|
*
|
||
|
* @since 3.0.0
|
||
|
* @return int
|
||
|
*/
|
||
|
public function getOffsetTimestamp() {
|
||
|
return $this->getTimestamp() + $this->getOffset();
|
||
|
}
|
||
|
}
|