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