ruby,如何查找数组的所有元素都在日期范围内

时间:2018-03-29 17:32:07

标签: ruby

我有一系列字符串日期[' 2018-03-28',....' 2018-02-18']以及日期选择器中的两个字符串日期& #39; 2018年1月1日'和' 2018-03-28',如何确定数组中的所有日期是否在范围内?感谢。

3 个答案:

答案 0 :(得分:3)

只要您确信日期将采用Name Status Type Initiator Size Time ----------------------------------------------------------------------- 1st attempt ReclaimAlocker (canceled) xhr jquery.min.js:4 0 B 37ms LockerAssignments 200 document Other 7.7KB 32ms All subsequent attempts ReclaimAlocker 200 xhr jquery.min.js:4 7.7KB 39ms 格式,就无需解析或替换任何内容。您可以使用yyyy-mm-dd来确定数组日期是否都在日期选择器日期之间:

#all?

您可以制作类似这样的方法:

>> dates = ['2018-03-28', '2018-02-28', '2018-02-18']
>> lower_limit = '2018-01-01'
>> upper_limit = '2018-03-28'

>> dates.all? { |date| date.between?(lower_limit, upper_limit) }
#> true

>> upper_limit = '2018-03-01'
>> dates.all? { |date| date.between?(lower_limit, upper_limit) }
#> false

如果您不确定输入的格式,请使用@SagarPandya建议的解析方法。

答案 1 :(得分:0)

更新只使用select,因为此日期格式是顺序的:

dates = ['2018-03-28','2017-01-01','2018-02-18']
dates.select{|d| d.between?('2018-01-01','2018-03-28')}

如果您想知道所有日期是否在范围内:

dates.all?{|d| d.between?('2018-01-01','2018-03-28')}

更新了答案,对不起,我很懒。

答案 2 :(得分:0)

require 'date'

dates = ['2018-03-28', '2018-02-18']
range = Date.parse('2018-01-01')..Date.parse('2018-03-28')

dates.all? { |date| range.cover? Date.parse date }
 #=> true