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();
 | 
						|
	}
 | 
						|
}
 |