2

我为视图编写了一个小的字段格式化程序,将原始秒数转换为漂亮的时间,比如 90 秒到 01:30,渲染的输出让我发疯。

问题是 01:30 变成 11:30,而 00:45 变成 10:45 等等......

我的功能是这样的:

function custom_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, &$items, $display) {
  $element = array();
  $settings = $display['settings'];
  switch ($display['type']) {
    case 'sectomin':
      foreach ($items as $delta => $item) {
        $time = intval($item['value']);
        $element[$delta] =  gmdate('i:s', $time);
        // dsm($element);
      }
      break;
  }

  return $element;
}

dsm($element) 的输出是正确的:00:45、01:30 等,但在渲染输出中,它变为 10:45、11:30 等。

任何想法可能是什么问题?


编辑:好的,发现问题:

...
  foreach ($items as $delta => $item) {
    $time = intval($item['value']);
    $element[$delta] = gmdate('i:s', $time);
  }
...

实际上应该是:

...
  foreach ($items as $delta => $item) {
    $time = intval($item['value']);
    $element[$delta] = array('#markup' => gmdate('i:s', $time));
  }
...
4

1 回答 1

0

尝试使用自定义格式化程序 - http://drupal.org/project/custom_formatters/模块。之后使用 date_parse_from_format("D, m/d/Y - H:i", $custom_date); 命令。请注意,在基于 Windows 的 Web 服务器中,此功能不存在。

于 2012-08-10T15:00:38.043 回答