К сожалению, date_default_timezone_set не работает так, как я думал. Как и в предыдущем примере, это сработало бы, если бы даты, с которыми я работал, были уже в формате отметки времени unix. Однако они были отформатированы в формате «Y-m-d H: i: s», и единственное, что могло измениться, это смещение по Гринвичу, которое, очевидно, не работает.
После нескольких часов беспокойства, вот как я смог справиться с преобразованием времени.
$datetime = new DateTime($date_to_convert);
$usertimezone = new DateTimeZone($_SESSION['timezone']); //each user has their own timezone i store in a session (i.e. - "Americas/Los_Angeles")
$datetime->setTimezone($usertimezone);
echo $datetime->format("Y-m-d H:i:s");
Полагаю, я мог бы также сделать следующее:
Pseudo code
strtotime($datetime)
date_default_timezone_set($user_timezone)
echo date(format, $datetime)
вышеизложенное, я думаю, заставит функцию date обрабатывать свою логику в заданной $ user_timezone. Оглядываясь назад, я должен был бы переводить каждый $ datetime -> unix_timestamp -> $ datetime_converted, что звучит не намного лучше, чем то, что я решил сделать.