獲取特定日期的對象我有一個數組叫周:從一個數組
[Mon, 08 Jun 2015, Tue, 09 Jun 2015, Wed, 10 Jun 2015, Thu, 11 Jun 2015, Fri, 12 Jun 2015, Sat, 13 Jun 2015, Sun, 14 Jun 2015]
我需要從數組週一至週五,並沒有使用它們的索引。 有沒有辦法做到這一點?
獲取特定日期的對象我有一個數組叫周:從一個數組
[Mon, 08 Jun 2015, Tue, 09 Jun 2015, Wed, 10 Jun 2015, Thu, 11 Jun 2015, Fri, 12 Jun 2015, Sat, 13 Jun 2015, Sun, 14 Jun 2015]
我需要從數組週一至週五,並沒有使用它們的索引。 有沒有辦法做到這一點?
Ruby提供了Date#monday?
和Date#friday
方法來確定日期是否符合特定的工作日。
因此,要在數組中查找週一,假設陣列由Date
情況
array.find(&:monday?)
,如果它是由Time
實例,然後
array.find { |time| time.to_date.monday? }
如果你想同時獲得星期一和星期五,只需使用select
# for Date
array.select { |date| date.monday? || date.friday? }
# for Time
array.select { |time| date = time.to_date && (date.monday? || date.friday?) }
這是高超和簡潔。我知道必須有一個簡單的方法。 –
很好的答案。請注意,有一個方法[Date#to_date](http://ruby-doc.org/stdlib-2.2.0/libdoc/date/rdoc/Date.html#method-i-to_date),它返回'self',這意味着您的'Time'實例的解決方案也適用於'Date'實例。 –
@ user2556665如果解決了您的問題,請接受答案 –
week = [Mon, 08 Jun 2015, Tue, 09 Jun 2015, Wed, 10 Jun 2015, Thu, 11 Jun 2015, Fri, 12 Jun 2015, Sat, 13 Jun 2015, Sun, 14 Jun 2015]
假設這些都在那裏Date
對象,你可以問每一個,如果他們一定平日:
week.select { |d| d.monday? || d.friday? }
這是無效的紅寶石陣列。 – mudasobwa
@mudasobwa我懷疑這是打印到irb中的有效數組的結果。 –
你是什麼意思「得到星期一/星期五」?你的意思是在「星期一」條目之後獲得類似於日期的對象嗎?爲什麼你需要它不使用索引? (最簡單的答案是獲得「星期一」的指數,然後採取下一個) –