在rails中我想检查以下条件:
student.bday >= @from_date and student.bday <= @to_date
其中@from_date
和@to_date
被确定为:
t = Date.today
@from_date = t.at_beginning_of_week.strftime("%d %b")
@to_date = t.at_end_of_week.strftime("%d %b")
但是在数据库student.bday
中保存为字符串(例如:17 Aug
)。它不是日期字段。如何将此字符串(17 Aug
)转换为("%d %b")
格式或转换为17 08
或类似的内容,以便我可以检查上述情况?有什么建议吗?
答案 0 :(得分:1)
Date.parse("17 Aug")
# Sun, 17 Aug 2014
您可能希望将所有内容带到同一年,以便比较有效,只是为了确保。
bday = Date.parse("#{student.bday} #{Date.today.strftime('%Y')}")
但默认行为是添加当前年份,所以这只是多余的......
更好的是,提供一个解析模型,以便解析最准确
bday = Date.strptime("#{student.bday} #{Date.today.strftime('%Y')}",'%d %b %Y')
# %d: day of month, %b: Short month, %Y: Year
答案 1 :(得分:0)
您可以将student.bday转换为所需的格式:
Date.parse(student.bday).strftime("%d %m")
这将输出为“17 08”