2017-09-13 91 views
1

我將整數轉換爲小枝模板系統中的時間格式。所以秒的總持續時間被轉換爲hh:mm:ss小枝模板添加領先的零與過濾器

下面是一個例子,我怎麼轉換時間:

{% filter round(0, 'floor') %}{{ agent.TotalCallDuration/3600 }}{% endfilter %} 

現在我要補充前導零的小時,如果低於10,我想:

{% filter round(0, 'floor')|format('%02d') %}{{ agent.TotalCallDuration/3600 }}{% endfilter %} 

,但沒有運氣。 。

回答

0

使用date濾波器timezone參數設置爲false

{{ agent.TotalCallDuration | date("H:i:s", false) }} 

對於更大的值超過24小時

上述解決方案僅如果秒數較小比86400秒(24小時)。對於更大的值,我會使用gmdate功能,例如:

$twig->addFilter(new Twig_Filter('duration', function ($x) { 
    return $x >= 86400 ? gmdate('d:H:i:s', $x - 86400) : gmdate('H:i:s', $x); 
})); 

其中$twigTwig_Environment實例編寫一個簡單的過濾器。

用法:

{{ agent.TotalCallDuration | duration }} 

其中, 「天」 在小時(hh:mm:ss)表示又如:

$twig->addFilter(new Twig_Filter('duration', function ($x) { 
    if ($x < 86400) { 
     return gmdate('H:i:s', $x); 
    } 

    $hours = gmdate('G', $x); 
    $days = (gmdate('d', $x) - 1) * 24 + $hours; 
    return $days . gmdate(':i:s', $x); 
})); 

思想是從this answer服用。

+0

哇,這是完美的,謝謝! – johnohod

+0

進一步審查。它不起作用。我有一個例子,其中agent.TotalCallDuration = 336651,它被轉換爲:21:30:51,當它應該已經遠高於95小時。 – johnohod

+0

@johnohod,我已經更新了答案 –