@@ -30,43 +30,46 @@ public function getFromUTCtoLocal($field, $format = "Y-m-d H:i:s")
3030 /**
3131 * @return DateTimeZone|null
3232 */
33- public function getEntityTimeZone (){
34- $ time_zone_id = $ this ->TimeZone ;
35- if (empty ($ time_zone_id )) {
33+ public function getEntityTimeZone ()
34+ {
35+ // @see http://php.net/manual/en/timezones.php
36+ $ time_zone_identifier = $ this ->TimeZoneIdentifier ;
37+ if (empty ($ time_zone_identifier )) {
3638 return null ;
3739 }
38- $ time_zone_list = timezone_identifiers_list ();
39- if ( isset ( $ time_zone_list [ $ time_zone_id ])) {
40- $ time_zone_name = $ time_zone_list [ $ time_zone_id ];
41- return $ time_zone = new DateTimeZone ( $ time_zone_name ) ;
40+ try {
41+ return new DateTimeZone ( $ time_zone_identifier );
42+ } catch ( Exception $ ex ) {
43+ return null ;
4244 }
43-
44- return null ;
4545 }
46+
4647 /**
4748 * @param $value
4849 * @param $format
4950 * @return null|string
5051 */
5152 public function convertDateFromTimeZone2UTC ($ value , $ format = "Y-m-d H:i:s " )
5253 {
53- $ time_zone_id = $ this ->TimeZone ;
54- if (empty ($ time_zone_id )) {
54+ $ time_zone_identifier = $ this ->TimeZoneIdentifier ;
55+ if (empty ($ time_zone_identifier )) {
5556 return $ value ;
5657 }
57- $ time_zone_list = timezone_identifiers_list ();
5858
59- if (isset ($ time_zone_list [$ time_zone_id ]) && !empty ($ value )) {
60- $ utc_timezone = new DateTimeZone ("UTC " );
61- $ time_zone_name = $ time_zone_list [$ time_zone_id ];
62- $ time_zone = new DateTimeZone ($ time_zone_name );
63- $ date = new DateTime ($ value , $ time_zone );
64- $ date ->setTimezone ($ utc_timezone );
59+ if (empty ($ value )) {
60+ return null ;
61+ }
6562
66- return $ date ->format ($ format );
63+ try {
64+ $ local_time_zone = new DateTimeZone ($ time_zone_identifier );
65+ } catch (Exception $ ex ) {
66+ return null ;
6767 }
6868
69- return null ;
69+ $ utc_timezone = new DateTimeZone ("UTC " );
70+ $ date = new DateTime ($ value , $ local_time_zone );
71+ $ date ->setTimezone ($ utc_timezone );
72+ return $ date ->format ($ format );
7073 }
7174
7275 /**
@@ -76,52 +79,65 @@ public function convertDateFromTimeZone2UTC($value, $format = "Y-m-d H:i:s")
7679 */
7780 public function convertDateFromUTC2TimeZone ($ value , $ format = "Y-m-d H:i:s " )
7881 {
79- $ time_zone_id = $ this ->TimeZone ;
80- if (empty ($ time_zone_id )) {
82+ $ time_zone_identifier = $ this ->TimeZoneIdentifier ;
83+ if (empty ($ time_zone_identifier )) {
8184 return $ value ;
8285 }
83- $ time_zone_list = timezone_identifiers_list ();
84-
85- if (isset ($ time_zone_list [$ time_zone_id ]) && !empty ($ value )) {
86- $ utc_timezone = new DateTimeZone ("UTC " );
87- $ time_zone_name = $ time_zone_list [$ time_zone_id ];
88- $ time_zone = new DateTimeZone ($ time_zone_name );
89- $ date = new DateTime ($ value , $ utc_timezone );
9086
91- $ date ->setTimezone ($ time_zone );
87+ if (empty ($ value )) {
88+ return null ;
89+ }
9290
93- return $ date ->format ($ format );
91+ try {
92+ $ local_time_zone = new DateTimeZone ($ time_zone_identifier );
93+ } catch (Exception $ ex ) {
94+ return null ;
9495 }
9596
96- return null ;
97+ $ utc_timezone = new DateTimeZone ("UTC " );
98+ $ date = new DateTime ($ value , $ utc_timezone );
99+ $ date ->setTimezone ($ local_time_zone );
100+
101+ return $ date ->format ($ format );
102+
97103 }
98104
99105 /**
100106 * @return string
101107 */
102- public function getTimeZoneName (){
103- $ time_zone_id = $ this ->TimeZone ;
104- if (empty ($ time_zone_id )) {
108+ public function getTimeZoneName ()
109+ {
110+ $ time_zone_identifier = $ this ->TimeZoneIdentifier ;
111+ if (empty ($ time_zone_identifier )) {
105112 return 'Not Set ' ;
106113 }
107- $ time_zone_list = timezone_identifiers_list ();
108- $ time_zone_name = $ time_zone_list [$ time_zone_id ];
109- return $ time_zone_name ;
114+ return $ time_zone_identifier ;
110115 }
111116
112- public function getTimeZoneOffsetFriendly (){
113- $ time_zone_id = $ this ->TimeZone ;
114- if (empty ($ time_zone_id )) {
117+ public function getTimeZoneOffsetFriendly ()
118+ {
119+ $ time_zone_identifier = $ this ->TimeZoneIdentifier ;
120+ if (empty ($ time_zone_identifier )) {
115121 return 'Not Set ' ;
116122 }
117- $ time_zone_list = timezone_identifiers_list ();
118- if (!isset ($ time_zone_list [$ time_zone_id ]))
119- return 'Not Set ' ;
120- $ time_zone_name = $ time_zone_list [$ time_zone_id ];
121- $ tz = new DateTimeZone ($ time_zone_name );
122- $ now = new DateTime ("now " , $ tz );
123- $ offset = $ tz ->getOffset ( $ now ) / 3600 ;
124- return "GMT " . ($ offset < 0 ? $ offset : "+ " .$ offset );
123+ try {
124+ $ local_time_zone = new DateTimeZone ($ time_zone_identifier );
125+ $ now = new DateTime ("now " , $ local_time_zone );
126+ $ offset = $ local_time_zone ->getOffset ($ now ) / 3600 ;
127+ return "GMT " . ($ offset < 0 ? $ offset : "+ " . $ offset );
128+ } catch (Exception $ ex ) {
129+ return null ;
130+ }
131+ }
125132
133+ /**
134+ * @return array
135+ */
136+ public function getTimezones (){
137+ $ timezones_list = [];
138+ foreach (DateTimeZone::listIdentifiers () as $ timezone_identifier ){
139+ $ timezones_list [$ timezone_identifier ] = $ timezone_identifier ;
140+ }
141+ return $ timezones_list ;
126142 }
127143}
0 commit comments