Rails как узнать разницу дат из каждого цикла

0

В приложении rails, как получить разницу дней в дате записей каждого цикла. У меня есть поле с именем date, и я хочу извлечь разницу дней между датой записи.

<div id="searchResult">
    <table class="table">
        <thead>
            <tr>
                <th>Guard Name</th>
                <th>Client Name</th>
                <th>Salary</th>
                <th>Transfer Date</th>
                <th>Days</th>
            </tr>
        </thead>
        <tbody>
            <% @search.each do |f| %>
            <tr>
                <td><%= f.guard.try(:name) %></td>
                <td><%= f.client.try(:name) %></td>
                <td><%= f.sallary %></td>
                <td><%= f.date.strftime("%Y-%b-%d") %></td>
                <td>Date Difference</td>
            </tr>
            <% end %>
        </tbody>
    </table>
</div>
Теги:

2 ответа

1
Лучший ответ

Существует временное различие

вы можете получить его как:

<div id="searchResult">
    <table class="table">
        <thead>
            <tr>
                <th>Guard Name</th>
                <th>Client Name</th>
                <th>Salary</th>
                <th>Transfer Date</th>
                <th>Days</th>
            </tr>
        </thead>
        <tbody>
            <% @search.each_with_index do |f, i| %>
            <tr>
                <td><%= f.guard.try(:name) %></td>
                <td><%= f.client.try(:name) %></td>
                <td><%= f.sallary %></td>
                <td><%= f.date.strftime("%Y-%b-%d") %></td>
                <td><%=TimeDifference.between(@search[i].date,@search[i+1].date).in_years%></td>
            </tr>
            <% end %>
        </tbody>
    </table>
</div>

Здесь @search - это массив, и для массива мы можем получить результат следующим образом:

array[0] - array[1] 

это previous_record.date - current_record.date

Я думаю, это должно сработать.

Простой пример

start_time = Time.new(2013,1)
end_time = Time.new(2014,1)

TimeDifference.between(start_time, end_time).in_years
=> 1.0
  • 0
    Спасибо, но я сделал это следующим образом ... <% = (@search [i] .date.to_date - @search [i + 1] .date.to_date) .to_i%>
  • 0
    @SantoshAryal Да, но гем time_difference дает time_difference результаты по-разному, вы можете увидеть его doc.any спасибо.
Показать ещё 1 комментарий
0

Если я правильно понял ваш вопрос:

Существует метод each_cons, который выполняет итерацию по N следующим элементам:

records.each_cons(2) do |current, previous|
  date_difference = current.date - previous.date
end
  • 0
    Спасибо, не могли бы вы уточнить. Мой случай немного другой. Я создаю отчет и наряду с тем же запросом хочу дифференцировать дату предыдущей записи с датой, которую я предоставляю во время запроса. Я изменил свой вопрос
  • 0
    Вы проходите, т.е. Date.new (2018, 1, 18), и вы хотите получить разницу в днях для каждой записи с: полем даты?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню