Разница дат в RoR 3 - PullRequest
       0

Разница дат в RoR 3

0 голосов
/ 09 марта 2011

У меня есть 2 даты, которые 2011-03-01 00:00:00 UTC и 2011-03-31 00:00:00 UTC.Когда я пытаюсь провести дни между ними, он возвращает 2592000.0 Дни.Зачем?Это должно быть 30 дней?

Чтобы получить дни между датами, я использую -, как date1 - date2.Как я могу получить правильную разницу?

Моя среда - Ruby 1.8.7 с Rails 3.0.3.


Я получаю данные из БД, а затем выполняю следующие действия:

//--some html code
<td>
<%@data.each do |data|%>
   <%=(@data.date1 - @data.date2).to_i%>
<%end%>
</td>
//--some html code

Тип данных в БД: DateTime.

Ответы [ 3 ]

1 голос
/ 12 марта 2011

2592000 на самом деле правильно. В секундах 2592000 секунд - это 30 дней. (30 дней * 24 часа / день * 60 минут / час * 60 секунд / минута = 2592000 секунд).

Ура!

редактировать: для преобразования секунд в дни, разделить на 24 * 60 * 60 или 86400.

1 голос
/ 22 марта 2013

Попробуйте:

(@data.date1 - @data.date2).to_i / 1.day   # 1.day.to_i => 86400

или

(@data.date1.to_date - @data.date2.to_date).to_i

с этим преобразованием, оно будет работать как для Time, так и для DateTime

0 голосов
/ 09 марта 2011
require 'DateTime'

today = DateTime.now
bday = today - 1063 #Date before 1063 days
(today - birthday).to_i # 1063

Now it should be clear. :)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...