[英]Check if the value is in range between closest array's elements. (ruby)
我需要知道如何檢查給定的值是否在兩個最接近的數組成員之間。 例如,我有一個日期數組,其中星期幾在給定的時間段內開始。 而且我需要檢查給定的日期是否在一周中的某一天。 例如:
我給定的值是2015-11-11。 我應該如何檢查是否是這幾周的日期之一? 感謝幫助。
%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?
字符串any?
遍歷它並檢查是否滿足要求,然后將日期字符串轉換為實際日期,而cweek則為您提供一年中的星期數。 Date.today給您今天的日期。
您可以使用'2015-11-11'.to_date.cweek
代替Date.today.cweek
。
上面的循環返回布爾值; 您還可以獲得滿足以下條件的值數組:
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
同一周的所有記錄的關系。
假設您的日期數組已排序:
date >= dates.first && date <= dates.last
如果要處理字符串,則可以“需要'date'”並將字符串轉換為日期(“ 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為您提供列表中日期的索引,即<= test_date。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.