红宝石-计算天数差异

时间:2019-04-10 16:06:52

标签: ruby date

我正在尝试计算两个日期之间的天数差异(整数)。如果它是负整数,如何处理差异?

这是我的代码示例。

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 个答案:

答案 0 :(得分:1)

我想这与您的代码库中未提供的内容有关,但通常来说,当前的逻辑可以处理它。更新的示例显示了它:

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