Вычитание даты в ruby или рельсах - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующее:

due_date = Date.parse '2020-07-18 00:00:00 -0700'
today_date = Time.now
(due_date - today_date).to_i

Я начинаю с преобразования строки даты (это строка, а не объект даты-времени ActiveRecord) в объект даты.

Затем Я создаю новый объект даты, используя Time.now, но когда я пытаюсь вычесть, я получаю ошибку:

(обратите внимание, что я запускаю это в консоли Rails):

irb(main):001:0>     due_date = Date.parse '2020-07-18 00:00:00 -0700'
=> Sat, 18 Jul 2020
irb(main):002:0>     today_date = Time.now
=> 2020-04-22 17:39:17 -0700
irb(main):003:0>     (due_date - today_date).to_i
Traceback (most recent call last):
    1: from (irb):3
TypeError (expected numeric)

Я думал, что могу вычесть два объекта даты, чтобы получить разницу в днях. Есть идеи?

1 Ответ

1 голос
/ 23 апреля 2020

Дата и время не являются одним и тем же классом, поэтому вы не можете просто вычесть одно из другого.

Попробуйте вместо этого использовать DateTime или приведите время к дате, используя to_date.

due_date = DateTime.parse '2020-07-18 00:00:00 -0700'
today_date = DateTime.current
(due_date - today_date).to_i

Также будьте осторожны, используя Time.now, потому что он не осведомлен о часовом поясе (https://thoughtbot.com/blog/its-about-time-zones)

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