You are here

TimeZone.php in Loft Data Grids 7.2

Same filename and directory in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/TimeZone.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/TimeZone.php
View source
<?php

/**
 * PHPExcel
 *
 * Copyright (c) 2006 - 2014 PHPExcel
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @category   PHPExcel
 * @package	PHPExcel_Shared
 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 * @license	http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 * @version	##VERSION##, ##DATE##
 */

/**
 * PHPExcel_Shared_TimeZone
 *
 * @category   PHPExcel
 * @package	PHPExcel_Shared
 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 */
class PHPExcel_Shared_TimeZone {

  /*
   * Default Timezone used for date/time conversions
   *
   * @private
   * @var	string
   */
  protected static $_timezone = 'UTC';

  /**
   * Validate a Timezone name
   *
   * @param	 string		$timezone			Time zone (e.g. 'Europe/London')
   * @return	 boolean						Success or failure
   */
  public static function _validateTimeZone($timezone) {
    if (in_array($timezone, DateTimeZone::listIdentifiers())) {
      return TRUE;
    }
    return FALSE;
  }

  /**
   * Set the Default Timezone used for date/time conversions
   *
   * @param	 string		$timezone			Time zone (e.g. 'Europe/London')
   * @return	 boolean						Success or failure
   */
  public static function setTimeZone($timezone) {
    if (self::_validateTimezone($timezone)) {
      self::$_timezone = $timezone;
      return TRUE;
    }
    return FALSE;
  }

  //	function setTimezone()

  /**
   * Return the Default Timezone used for date/time conversions
   *
   * @return	 string		Timezone (e.g. 'Europe/London')
   */
  public static function getTimeZone() {
    return self::$_timezone;
  }

  //	function getTimezone()

  /**
   *	Return the Timezone transition for the specified timezone and timestamp
   *
   *	@param		DateTimeZone	 	$objTimezone	The timezone for finding the transitions
   *	@param		integer	 			$timestamp		PHP date/time value for finding the current transition
   *	@return	 	array				The current transition details
   */
  private static function _getTimezoneTransitions($objTimezone, $timestamp) {
    $allTransitions = $objTimezone
      ->getTransitions();
    $transitions = array();
    foreach ($allTransitions as $key => $transition) {
      if ($transition['ts'] > $timestamp) {
        $transitions[] = $key > 0 ? $allTransitions[$key - 1] : $transition;
        break;
      }
      if (empty($transitions)) {
        $transitions[] = end($allTransitions);
      }
    }
    return $transitions;
  }

  /**
   *	Return the Timezone offset used for date/time conversions to/from UST
   *	This requires both the timezone and the calculated date/time to allow for local DST
   *
   *	@param		string	 			$timezone		The timezone for finding the adjustment to UST
   *	@param		integer	 			$timestamp		PHP date/time value
   *	@return	 	integer				Number of seconds for timezone adjustment
   *	@throws		PHPExcel_Exception
   */
  public static function getTimeZoneAdjustment($timezone, $timestamp) {
    if ($timezone !== NULL) {
      if (!self::_validateTimezone($timezone)) {
        throw new PHPExcel_Exception("Invalid timezone " . $timezone);
      }
    }
    else {
      $timezone = self::$_timezone;
    }
    if ($timezone == 'UST') {
      return 0;
    }
    $objTimezone = new DateTimeZone($timezone);
    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
      $transitions = $objTimezone
        ->getTransitions($timestamp, $timestamp);
    }
    else {
      $transitions = self::_getTimezoneTransitions($objTimezone, $timestamp);
    }
    return count($transitions) > 0 ? $transitions[0]['offset'] : 0;
  }

}

Classes

Namesort descending Description
PHPExcel_Shared_TimeZone PHPExcel_Shared_TimeZone