PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Shared / TimeZone.php

TimeZone.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/TimeZone.php

141 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * PHPExcel
5 *
6 * Copyright (c) 2006 - 2014 PHPExcel
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * @category PHPExcel
23 * @package PHPExcel_Shared
24 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
25 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
26 * @version ##VERSION##, ##DATE##
27 */
28
29
30 /**
31 * PHPExcel_Shared_TimeZone
32 *
33 * @category PHPExcel
34 * @package PHPExcel_Shared
35 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
36 */
37 class PHPExcel_Shared_TimeZone
38 {
39 /*
40 * Default Timezone used for date/time conversions
41 *
42 * @private
43 * @var string
44 */
45 protected static $_timezone = 'UTC';
46
47 /**
48 * Validate a Timezone name
49 *
50 * @param string $timezone Time zone (e.g. 'Europe/London')
51 * @return boolean Success or failure
52 */
53 public static function _validateTimeZone($timezone) {
54 if (in_array($timezone, DateTimeZone::listIdentifiers())) {
55 return TRUE;
56 }
57 return FALSE;
58 }
59
60 /**
61 * Set the Default Timezone used for date/time conversions
62 *
63 * @param string $timezone Time zone (e.g. 'Europe/London')
64 * @return boolean Success or failure
65 */
66 public static function setTimeZone($timezone) {
67 if (self::_validateTimezone($timezone)) {
68 self::$_timezone = $timezone;
69 return TRUE;
70 }
71 return FALSE;
72 } // function setTimezone()
73
74
75 /**
76 * Return the Default Timezone used for date/time conversions
77 *
78 * @return string Timezone (e.g. 'Europe/London')
79 */
80 public static function getTimeZone() {
81 return self::$_timezone;
82 } // function getTimezone()
83
84
85 /**
86 * Return the Timezone transition for the specified timezone and timestamp
87 *
88 * @param DateTimeZone $objTimezone The timezone for finding the transitions
89 * @param integer $timestamp PHP date/time value for finding the current transition
90 * @return array The current transition details
91 */
92 private static function _getTimezoneTransitions($objTimezone, $timestamp) {
93 $allTransitions = $objTimezone->getTransitions();
94 $transitions = array();
95 foreach($allTransitions as $key => $transition) {
96 if ($transition['ts'] > $timestamp) {
97 $transitions[] = ($key > 0) ? $allTransitions[$key - 1] : $transition;
98 break;
99 }
100 if (empty($transitions)) {
101 $transitions[] = end($allTransitions);
102 }
103 }
104
105 return $transitions;
106 }
107
108 /**
109 * Return the Timezone offset used for date/time conversions to/from UST
110 * This requires both the timezone and the calculated date/time to allow for local DST
111 *
112 * @param string $timezone The timezone for finding the adjustment to UST
113 * @param integer $timestamp PHP date/time value
114 * @return integer Number of seconds for timezone adjustment
115 * @throws PHPExcel_Exception
116 */
117 public static function getTimeZoneAdjustment($timezone, $timestamp) {
118 if ($timezone !== NULL) {
119 if (!self::_validateTimezone($timezone)) {
120 throw new PHPExcel_Exception("Invalid timezone " . $timezone);
121 }
122 } else {
123 $timezone = self::$_timezone;
124 }
125
126 if ($timezone == 'UST') {
127 return 0;
128 }
129
130 $objTimezone = new DateTimeZone($timezone);
131 if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
132 $transitions = $objTimezone->getTransitions($timestamp,$timestamp);
133 } else {
134 $transitions = self::_getTimezoneTransitions($objTimezone, $timestamp);
135 }
136
137 return (count($transitions) > 0) ? $transitions[0]['offset'] : 0;
138 }
139
140 }
141