как проверить, находится ли сегодня между двумя датами в 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 ответов
использовать \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 для отладки того, как выглядят ваши фактические даты в качестве метода устранения неполадок.