比较日期不适用于不同年份但可以正常使用

时间:2018-11-09 10:57:40

标签: ruby ruby-on-rails-5

我想将以下日期与不同年份和保存状态进行比较:

@date = DateTime.now.strftime("%d-%b-%Y")
@valid_to_date = @new_certificate.valid_to.strftime("%d-%b-%Y")
if @valid_to_date == @date
  @new_certificate.update_attributes(status: 1)
elsif @valid_to_date > @date
  @new_certificate.update_attributes(status: 2)
elsif @valid_to_date < @date
  @new_certificate.update_attributes(status: 3)
else
end

它在同一年内都可以正常工作,但是在不同年份里,它都无法正常工作。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果要将日期作为日期而不是您编写的特定字符串格式进行比较,则将它们作为日期进行比较:

@date = Date.today
@valid_to_date = @new_certificate.valid_to.to_date

即使您选择将日期作为字符串进行比较,比较也会从左到右进行(除非您使用阿拉伯语这样的语言),因此字符串格式显然将不起作用。您还需要在适当的位置填充零。