CakePHP 2.2.3使用分钟间隔和默认分钟值时,FormHelper无法设置默认子午线

时间:2013-03-13 15:48:14

标签: cakephp cakephp-2.2 formhelper

在我的应用程序中,以下内容应在12小时内输出小时,分钟和子午线<select>,默认情况下选择下午4:30:

echo $this->Form->input('time_example', array(
    'interval' => 5,
    'timeFormat' => '12',
    'type' => 'time',
    'selected' => array(
        'hour' => '4',
        'min' => '30',
        'meridian' => 'pm'
    )
));

但默认选择的时间实际上显示为凌晨4:30。

经过一番摆弄后,我发现如果从选项中删除interval,它将正确默认为下午4:30,如果从选项中删除min,它将正确默认为下午4:00

我挖掘了FormHelper.php并在FormHelper :: dateTime()中找到了这个,从第2246行开始(在CakePHP 2.2.3版本中):

if (!empty($interval) && $interval > 1 && !empty($min)) {
    $current = new DateTime();
    if ($year !== null) {
        $current->setDate($year, $month, $day);
    }
    if ($hour !== null) {
        $current->setTime($hour, $min);
    }
    $change = (round($min * (1 / $interval)) * $interval) - $min;
    $current->modify($change > 0 ? "+$change minutes" : "$change minutes");
    $newTime = explode(' ', $current->format('Y m d H i a'));
    list($year, $month, $day, $hour, $min, $meridian) = $newTime;
}

如果同时设置了$interval$min,则可以防止$min$interval冲突,但$meridian会被{{3}覆盖} $hour是24小时格式。这会强制$meridian对于$hour小于12的任何值变为'am',从而无法选择下午4:30。

我是否错误地使用了帮助程序,或者这是核心错误?

1 个答案:

答案 0 :(得分:1)

此错误已在this merge中得到纠正。