new DateTime ('2009-09-30 12: 00: 00 + 0400'); class CustomDateTime extends DateTime {
public function setTimezone ($ dtz) {
if (! preg_match ('/ ^ [0-9 \ + \ -] /', $ dtz-> getName ())) {
return parent :: setTimezone ($ dtz);
}
$ offset = $ dtz-> getOffset ($ this) - $ this-> getTimezone () -> getOffset ($ this);
$ this-> modify ($ offset. 'second');
$ format = $ this-> format ('Ymd H: i: s'). $ dtz-> getName ();
$ this -> __ construct ($ format);
}
}
public function testApplyUnnamedTimezoneToOtherDateTime () {
$ dt1 = new CustomDateTime ('2009-09-30T12: 00: 00-02: 00');
$ dt2 = new CustomDateTime ('2009-09-30T12: 00: 00 + 02: 00');
$ dt2-> setTimezone ($ dt1-> getTimezone ());
$ this-> assertEquals ('2009-09-30T08: 00: 00-02: 00', $ dt2-> format ('c'));
}
Source: https://habr.com/ru/post/71076/
All Articles