我需要知道如何检查我的给定值是否在两个最接近的数组成员之间。例如,我有一系列日期,其中包含在给定时间段内开始的星期日期。我需要检查我的给定日期是否在其中一周内。例如:
我的给定值是2015-11-11。我应该如何查看这些周的日期之一?谢谢你的帮助。
答案 0 :(得分:0)
%w(2015-11-02 2015-11-09 2015-11-16 2015-11-23).any? do |date|
date.to_date.cweek == Date.today.cweek
end
以下是这样做的:
首先,你有一个字符串数组,你使用any?
循环遍历它并检查是否满足要求,然后你将日期字符串转换为实际日期,而cweek给你一年中一周的数字。 Date.today为您提供今天的约会。
而不是Date.today.cweek
,您可以使用'2015-11-11'.to_date.cweek
。
上面的循环返回boolean;您还可以获得满足以下条件的值数组:
new_array = %w(2015-11-02 2015-11-09 2015-11-16 2015-11-23).map do |date|
date.to_date.cweek == '2015-11-11'.to_date.cweek
end.compact
资源:
更新
如果您想从数据库中仅获取具有特定星期日期的记录,您可以这样做:
my_date = '2015-11-11'.to_date
matching_records = MyResource.where( date: my_date.beginning_of_week..my_date.end_of_week )
假设您有一个模型MyResource
,并且它有一个列date
。这样做会返回与my_date
同一周日期的所有记录的关系。
答案 1 :(得分:0)
假设您的日期数组已排序:
date >= dates.first && date <= dates.last
答案 2 :(得分:0)
如果您正在处理字符串,则可以“要求'日期'”并将字符串转换为日期(“Date.parse('2001-02-03')”)。
正如其他人所建议的,您可以查看您的日期是否在列表的第一个和最后一个条目之间。
如果真实列表已排序且每个条目相隔一周,那么您可以轻松找到列表中您的人员所在的位置。
,例如,列表是[date_0,date_1,date_2,...,date_k](相隔1周),并且在date_0和date_k之间给出了test_date。然后(test_date.jd - date_0.jd)/ 7为您提供列表中日期的索引&lt; = test_date。