Для веб-приложения, работающего в разных часовых поясах, существует ли способ для входов CakePHP 2.x dateTime отображать значения, показанные пользователю при редактировании, в их часовом поясе.
Например, Если у меня есть запись, которая хранится в базе данных, которая говорит appointment_date
(который будет в часовом поясе UTC), если я, как пользователь в часовом поясе America/Jamaica
Я хотел бы отредактировать эту запись со входами, показывающими мне значения в моем часовом поясе, например, когда я делаю это:
<?php echo $this->Form->dateTime('appointment_date'); ?>
И, конечно, давайте предположим, что мы переведем обратно в часовой пояс UTC непосредственно перед сохранением.
Я создал суть здесь: https://gist.github.com/antoniovassell/fed29e782be33b7eb5ab
Что позволяет использовать абстрактный способ возможного обращения с преобразованием часового пояса ввода dateTime, используя специальный вспомогательный класс, расширяющий FormHelper.
public function dateTime($fieldName, $dateFormat = 'DMY', $timeFormat = '12', $attributes = array()) {
$attributes = parent::value($attributes, $fieldName);
if (!empty($attributes['value'])) {
$attributes['value'] = CakeTime::format('Y-m-d H:i:s', $attributes['value']);
}
return parent::dateTime($fieldName, $dateFormat, $timeFormat, $attributes);
}
Поэтому, кроме ручного преобразования значения формы в часовой пояс пользователя с помощью TimeHelper, а затем установки значения для ввода, мы могли бы автоматизировать это, переопределив функцию Form dateTime. И всякий раз, когда мы звоним echo $this->Form->dateTime('my_field');
это мы делаем это автоматически.
Других решений пока нет …