rails将字符串转换回日期格式

时间:2014-06-30 06:52:58

标签: ruby-on-rails

在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或类似的内容,以便我可以检查上述情况?有什么建议吗?

2 个答案:

答案 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”