Как получить разницу во времени в минутах в рельсах для двух полей времени?

Я хочу рассчитать разницу во времени в минутах между двумя полями date_time.like created_at и updated_at поля. Я хочу получить результат следующим образом: updated_at - created_at = some minutes.

эти времена присутствуют в часовом поясе ИНДИИ. как я могу это сделать в рельсах?

created = article.created_at
updated = article.updated_at

minutes = updated - created
4
20 июня '15 в 13:49
источник поделиться
3 ответов

Поскольку created_at и updated_at имеют тип DateTime, это должно работать.

created = article.created_at
updated = article.updated_at
minutes = ((updated - created) * 24 * 60).to_i

Объяснение:

Вычитание двух DateTimes возвращает прошедшее время в днях. В приведенном ниже примере e-d вернет (28807336643183/28800000000000). Чтобы преобразовать это в минуты, нам нужно умножить его на 24*60 (поскольку день имеет 24 часа, а каждый час - 60 минут)

Пример (тестирование):

d = DateTime.now
 => Tue, 13 Jun 2017 10:21:59 +0530 
2.3.3 :003 > e = DateTime.now + 1.day
 => Wed, 14 Jun 2017 10:22:21 +0530
g = ((e-d) * 24 * 60).to_i
 => 1440
7
20 июня '15 в 13:54
источник

Это решение работает для моделей ActiveRecord, используя классы TimeWithZone для created_at и updated_at.

created = article.created_at
updated = article.updated_at

minutes = (updated - created) / 1.minutes
6
31 авг. '16 в 19:01
источник

Это то, что я использовал, и он просто заботится о днях или Мин для вас, а также дает вам разницу time_ago_in_words просто передать объект Datetime, Date или Time, и он вернет разницу, которая является читаемой человеком. time_ago_in_words(@post.created_at)

0
10 янв. '17 в 12:28
источник

Посмотрите другие вопросы по меткам или Задайте вопрос