ruby – Rails日期比较;日期大于或等于几天前
发布时间:2020-12-16 21:31:54 所属栏目:百科 来源:网络整理
导读:我的数据库中的日期如下所示:2012-07-23 我试图看看日期是否超过7天前且不到14天前,或者看看日期是否大于14天前,但我没有运气.. 这是我的代码: def progress_report_status_check(date) progress_date = date.to_date seven_days = 7.days.ago.to_date fou
我的数据库中的日期如下所示:2012-07-23
我试图看看日期是否超过7天前且不到14天前,或者看看日期是否大于14天前,但我没有运气.. 这是我的代码: def progress_report_status_check(date) progress_date = date.to_date seven_days = 7.days.ago.to_date fourteen_days = 14.days.ago.to_date if seven_days > (progress_date - 7.days.ago.to_date) or (progress_date - 14.days.ago.to_date) < fourteen_days "due" elsif (progress_date - 14.days.ago.to_date) > fourteen_days "overdue" end end 解决方法def progress_report_status_check(progress_date) # Pass in a date if (progress_date < Date.now-14.days) "overdue" elsif (progress_date < Date.now-7.days) "due" end end 或(不太可读) def progress_report_status_check(progress_date) # Pass in a date (progress_date < Date.now-14.days) ? "overdue" : ((progress_date < Date.now-7.days) ? "due" : "") : "" end end 根据您的使用情况,您可能希望创建命名范围,例如: scope :overdue where(:progress_date < Date.now-14.days) scope :due where(:progress_date < Date.now-7.days) 然后你的调用代码可能是这样的 def progress_report_status_check(progress_date) # Pass in a date self.overdue? ? "overdue" : self.due? ? : "due" : "" end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |