Rails比较日期
答
分析特定的日期格式使用Date.strptime:
str = '2016-6'
Date.strptime(str, '%Y-%m')
=> Wed, 01 Jun 2016
然后,你可以简单地比较日期:
Date.strptime('2016-6', '%Y-%m') < Date.strptime('2016-10', '%Y-%m')
=> true
,并找到一个字符串,它代表的最后日期:
['2016-6', '2016-10'].max_by { |str| Date.strptime(str, '%Y-%m') }
=> "2016-10"
+0
这完全是我想要的!谢谢。 – neo
答
假设你从你那里得到你的日期可能想要使用这样的东西格式化日期:
<%= f.date_select :startdate,{ discard_day: false, discard_month: true, discard_year: true }, { :class => 'form-control' } %>
答
提供的日期格式不足以进行分析。
只要格式符合某些规则,Ruby就可以解析字符串日期。
使用连字符-
时,包含一天是强制性的。
这是因为通常使用连字符的日期格式包括当天。
幸运的是,如果你愿意或能够改变你可以做以下格式:
date = '2016/6'
DateTime.parse(date)
=> Wed, 01 Jun 2016 00:00:00 +0000
否则我只想追加第一个日期。
date = '2016-6' + '-1'
DateTime.parse(date)
=> Wed, 01 Jun 2016 00:00:00 +0000
现在你可以做典型比较的东西:
date1 = ...
date2 = ...
case date1 <=> date2
when -1
# date1 is before date2
when 1
# date1 is after date2
when 0
# date1 is equal to date2
很奇怪的日期格式) – Aleksey