как проверить, находится ли сегодня между двумя датами в Twig?

Я хотел бы проверить, находится ли сегодняшняя дата между двумя датами из базы данных. Вот мой код.

{% if today < room.price_start_date and today > room.price_end_date %}
<a href="{{'/'|app}}/book/{{room.id}}"><button type="button" class="btn btn-default btn-xs">Book this room</button></a>
{% else %}
<a href="{{'/'|app}}/contact"><button type="button" class="btn btn-default btn-xs">Book this room</button></a>
{% endif %}

на today переменная получает свое значение из этого кода:

$todayDate = date('Y-m-d');
$this['today'] = date('Y-m-d', strtotime($todayDate));

на price_start_date и price_end_date Я получаю их из базы данных, а тип их столбцов -Date

любая идея, как проверить, если today между room.price_start_date и room.price_end_date в Twig?

3 ответов


согласно руководству веточки, вы можете использовать date


использовать \DateTime экземпляры для сравнения дат в Twig (а также PHP).

что не так?

дата ('Y-m-d') функция возвращает форматированную дату строка.

Итак, вы должны изменить его на $today = new \DateTime('today'); и передайте этот экземпляр в шаблон Twig или используйте date() функция веточки сразу в вашем состоянии.

The price_start_date и price_end_date Я получаю их из базы данных и типа их столбцов дата.

предполагая, что эти два (room.price_start_date и room.price_end_date) являются экземплярами \DateTime, тогда ваш код веточки должен работать нормально.


попробовать функцию date: http://twig.sensiolabs.org/doc/functions/date.html

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

правка #2

Извините, у меня не было возможности просмотреть документы по функции даты Twig, но хорошо, что @Yonel и @Farside сделали это. Точки @ Yonel-это те, которые меня интересовали, и у меня не было времени дать хороший ответ.

Если вы используете \DateTime, тогда это будет ваш код изменения:

{% if date() < date(room.price_start_date) and date() > date(room.price_end_date) %}
    <a href="{{'/'|app}}/book/{{room.id}}">
    <button type="button" class="btn btn-default btn-xs">Book this room</button></a>
{% else %}
    <a href="{{'/'|app}}/contact">
    <button type="button" class="btn btn-default btn-xs">Book this room</button></a>
{% endif %}

Я также улучшил форматирование. Я предполагаю, что вы просто проверяете, что пользователь может щелкнуть забронировать номер в течение этого периода. И ваш код выглядит хорошо.

вы могли бы добавить {{ dump(room.price_start_date) }} и так далее в среде DEV для отладки того, как выглядят ваши фактические даты в качестве метода устранения неполадок.