ruby ERB сравнить даты
У меня есть сайт, который использует файлы ruby (rhtml), которые я не привык редактировать (больше используется для php). У меня есть только доступ к этим файлам для редактирования (поэтому не бэкэнд).
В базе данных у меня есть дата, которую я могу отобразить, используя:
<%= zp.date %>
который будет отображаться, например, 14/10/2010
Я могу отобразить сегодняшнюю дату, используя:
<%= Date.today.strftime("%Y%m%d") %>
который будет отображать 20160122.
Я пытаюсь понять, как я могу сравнивать даты, отображать разницу и, в свою очередь, отображать что-то другое.
например
compare <%= zp.date %> and <%= Date.today.strftime("%Y%m%d") %>.
If days difference is less than 20 echo XXX
else
If days difference between 20 - 40 echo XXX
else
If days difference between 41 - 60 echo XXX
Буду признателен за любую помощь (ссылки и т. Д.), Примеры кода будет принята с благодарностью.
Опять же, чтобы уточнить, я могу только редактировать HTML.
1 ответ
Даты прямо сопоставимы с операторами if, и вычисление разницы покажет вам количество дней между ними. Если предположить, zp.date
в прошлом:
<% date_difference = Date.today - zp.date %>
<% if date_difference < 20 %>
...
<% elsif date_difference <= 40 %>
...
<% elsif date_difference <= 60 %>
...
<% else %>
Difference is greater than 60
<% end %>
Обратите внимание <% %>
теги, которые используются для if-логики и внутреннего кода Ruby - в основном любое выражение, которое не должно выводиться (спасибо @QPaysTaxes) вместо <%= %>
который является выходным тегом.
Если вы не знаете, zp.date
в прошлом или будущем, вы можете использовать abs
метод на результат:
<% date_difference = (Date.today - zp.date).abs %>
И если zp.date
на самом деле не Date
объект, то parse
Это:
<% date_difference = (Date.today - Date.parse(zp.date)).abs %>
Старые версии Ruby понадобятся strptime
когда строка даты неоднозначна:
<% date_difference = (Date.today - Date.strptime(zp.date, '%d/%m/%Y')).abs %>