2012-04-25 2 views
2

Я написал небольшое полевое форматирование для представлений, чтобы преобразовать количество сырых секунд в красивое время, что-то вроде 90 секунд до 01:30, а полученный вывод просто меня заводит псих.Drupal Views добавление 1 в начале поля

дело в том, что 1:30 превращается в 11:30, и 00:45 Turnes до 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 и т. д.

любые идеи, в чем может быть проблема?


EDIT: нормально, нашел проблему:

... 
    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)); 
    } 
... 
+0

приятный. как вы узнали, что это ключ разметки? –

+0

Я не могу вспомнить ... но я думаю, что это было, когда я сравнивал выходы dsm ($ element) с некоторыми другими настраиваемыми форматировщиками. – alechko

+0

спасибо, будем помнить об этом –

ответ

0

Попробуйте использовать пользовательские форматтеры - http://drupal.org/project/custom_formatters/ модуль. После этого используйте date_parse_from_format («D, m/d/Y - H: i», $ custom_date); команда. Обратите внимание, что на веб-серверах на базе Windows эта функция отсутствует.

+0

Спасибо Фрэнсис, но на самом деле я уже нашел решение, которое я опубликовал в своем вопросе – alechko