получить разницу во времени между двумя датами

Я хотел бы сравнить две даты, чтобы получить разницу во времени (дни, часы, минуты и секунды) в TWIG

{% set todayDate = ( "now"| date("Y-m-d H:i:s") ) %}  //2013-04-17 08:45:28 
{% set endDate =  (enddate|date('Y-m-d H:i:s')) %}    //2013-04-18 23:59:59

Как узнать разницу в часах?


person Ramanan    schedule 17.04.2013    source источник
comment
Логика не должна входить в ваш шаблон. Сравните даты в PHP и назначьте разницу переменной, которую вы передаете в свой шаблон.   -  person vascowhite    schedule 17.04.2013
comment
Если вы используете set в шаблоне веточки, вы можете быть уверены, что вам следует сделать это в своем контроллере, а не в шаблоне.   -  person Johannes Klauß    schedule 17.04.2013
comment
возможный дубликат разницы дат Twig   -  person Maks3w    schedule 29.11.2014


Ответы (2)


Наконец-то я понял ... сравните две даты, чтобы получить время (дни, часы и минуты) в контроллере:

(запрос доктрины)

TIMESTAMPDIFF(DAY,CURRENT_TIMESTAMP(), a.enddate) AS endday,    
(TIMESTAMPDIFF(HOUR,CURRENT_TIMESTAMP(), a.enddate) - TIMESTAMPDIFF(DAY,CURRENT_TIMESTAMP(),a.enddate)*24) AS endhour,
(TIMESTAMPDIFF(MINUTE,CURRENT_TIMESTAMP(), a.enddate) - TIMESTAMPDIFF(HOUR,CURRENT_TIMESTAMP(), a.enddate)*60) AS endmin,

Создал функцию для TIMESTAMPDIFF https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/TimestampDiff.php.

и включить фрагмент

app-> config-> config.yml doctrine: dbal: ........

orm:
    entity_managers:
        default:
            auto_mapping: true
            dql:
                datetime_functions:
                    timestampdiff: Acme\BUNDLE\FOLDER\TimestampDiff

Спасибо всем ..

person Ramanan    schedule 19.04.2013

Поскольку вы передаете конечную дату в свой шаблон, вы должны сделать это в своем контроллере и передать результат в свой шаблон.

Вот код PHP, который вы можете использовать:

$now = new DateTime('now');
$dateToCompare = new DateTime('your date');

$difference = $now->format('U') - $dateToCompare->format('U');
// or if your date to compare is in the future :
// $difference = $dateToCompare->format('U') - $now->format('U');
$time_diff = gmdate('H',$difference);

echo $time_diff;
person Yoh    schedule 17.04.2013