Чтобы получить timezone_type, я могу использовать:
use Cake\I18n\Time;
$now = Time::now();
$type = get_object_vars($now->timezone)['timezone_type'];
// or
$type = $now->getOffset()/60/60;
Но есть ли более правильное решение в СакеPHP 3.x?
Нет, мне нужно получить именно значение свойства timezone_type
Но ваш пример с getOffset() этого не делает, поэтому я бы снова спросил, что вы думаете о timezone_type и для чего он вам нужен? Прямого доступа к нему нет, поэтому вы получите лучшую помощь, если опишете реальную проблему, которую пытаетесь решить.
Когда пользователь на моем сайте делает запрос на смену пароля (если он его забыл), я отправляю письмо с указанием времени такого запроса и часового пояса. Вот почему мне это нужно.
У вас есть объект Time. Посмотрите на форматирование даты и времени и найдите формат, который включает информацию о часовом поясе, который вам нужен. (Страница ICU о форматах) [icu-project.org/apiref/icu4c/… включает целый раздел о часовых поясах.





В итоге мое решение свелось к следующему:
use Cake\I18n\Time;
$now = Time::now();
$res = $now->format('d.m.Y в G:i:s').' UTC'. $now->format('O ') . $now->timezoneName;
Как вы думаете, что на самом деле представляет / представляет
timezone_type? Ваш примерgetOffset()заставляет меня думать, что вы ищете что-то другое и просите xy-проблемный вопрос.