@@ -22,6 +22,28 @@ static protected function isTimeInstance()
2222 {
2323 return self ::$ staticData instanceof Time;
2424 }
25+
26+ /**
27+ * Set Global TimeZone
28+ *
29+ * @return void
30+ */
31+ public function __setGlobalTimeZone ($ timezone = null )
32+ {
33+ $ timezone = TimeHelper::setPassedTimezone ($ timezone );
34+
35+ date_default_timezone_set ($ timezone );
36+ }
37+
38+ /**
39+ * Get Global TimeZone
40+ *
41+ * @return string|null
42+ */
43+ public function __getGlobalTimeZone ()
44+ {
45+ return date_default_timezone_get ();
46+ }
2547
2648 /**
2749 * Get the stored date time
@@ -87,9 +109,7 @@ static public function setDate($date = null)
87109 if (!self ::isTimeInstance ()){
88110 new static (date: $ date );
89111 } else {
90- self ::$ staticData ->date = TimeHelper::setPassedDate (
91- $ date ?? 'now '
92- );
112+ self ::$ staticData ->date = TimeHelper::setPassedDate ($ date );
93113 }
94114
95115 return self ::$ staticData ;
@@ -108,9 +128,7 @@ static public function setTimezone($timezone = null)
108128 }
109129
110130 // set timezone
111- self ::$ staticData ->timezone = TimeHelper::setPassedTimezone (
112- $ timezone ?? 'UTC '
113- );
131+ self ::$ staticData ->timezone = TimeHelper::setPassedTimezone ($ timezone );
114132
115133 return self ::$ staticData ;
116134 }
@@ -144,9 +162,18 @@ static private function nonExistMethod($method = null, $args = null, $clone = nu
144162 'gettimezone ' => '__getTimeZone ' ,
145163 'settimezone ' => '__setTimeZone ' ,
146164 'setdate ' => '__setDate ' ,
165+ 'setglobaltimezone ' => '__setGlobalTimeZone ' ,
166+ 'getglobaltimezone ' => '__getGlobalTimeZone ' ,
147167 default => '__timeAgo '
148168 };
149169
170+ // this will happen if __construct has not been called
171+ // before calling an existing method
172+ // mostly when using [setglobaltimezone|getglobaltimezone] methods
173+ if (empty ($ clone )){
174+ $ clone = new static ();
175+ }
176+
150177 return $ clone ->$ method (...$ args );
151178 }
152179
0 commit comments