ruby - рассчитать разницу в днях - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь вычислить разницу в днях (как целое число) между двумя датами.Как мне справиться с разницей, если она является отрицательным int?

Вот пример моего кода.

expiry_date заполняется из ответа JSON

expiry_date #e.g - 2019-04-01

def calculate_date_difference
 (expiry_date - Date.today).to_i
end

if calculate_date_difference.between?(0,90)
 puts "90 days or less"
elsif calculate_date_difference > 90
 puts "more than 90 days"
else 
 puts "past"
end

Код работает правильно, когда expiry_date находится в будущем, однако, если дата истечения срока уже в прошлом, он продолжает попадать в неправильныйсостояние.Например, разница в этом примере - «-9».

Я ожидаю, что он напечатает «прошлое», но всегда печатает «90 дней меньше»

Спасибо

1 Ответ

1 голос
/ 10 апреля 2019

Полагаю, речь идет о чем-то внутри вашей кодовой базы, которого здесь не было, но в общем случае текущая логика справляется с этим. Обновленный образец, который показывает это:

require 'date'

expiry_date = Date.new(2019,4,1) 

def calculate_date_difference(expiry_date)
  (expiry_date - Date.today).to_i
end

message = if calculate_date_difference(expiry_date).between?(0,90)
  "90 days or less"
elsif calculate_date_difference(expiry_date) > 90
  "more than 90 days"
else 
  "past"
end

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