0

给定一个在不同时区运行的 Web 应用程序,CakePHP 2.x 日期时间输入是否可以在编辑时显示给用户显示的值,使其处于他们的时区。

例如。如果我有一条存储在数据库中的记录appointment_date(它将在 UTC 时区中),如果我作为 timezone 中的用户America/Jamaica,我想使用显示我时区值的输入来编辑该记录,就像我这样做时:

<?php echo $this->Form->dateTime('appointment_date'); ?>

当然,假设我们将在保存之前转换回 UTC 时区。

4

1 回答 1

0

我在这里创建了一个要点:https ://gist.github.com/antoniovasell/fed29e782be33b7eb5ab 它允许使用扩展 FormHelper 的自定义帮助程序类以抽象方式处理 dateTime 输入时区转换。

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');它时,我们都会自动执行此操作。

于 2015-05-29T09:04:51.220 回答