2017-09-20 159 views
0

我想檢查日期2017-09-21 15:30:00 -0400是否在本週範圍內。檢查範圍內的日期

這裏是代碼如下:我想輸出true或false,但它不輸出正確的答案。理論上這應該起作用。

dateTime = Time.new(2017, 9, 21, 15, 30) => 2017-09-21 15:30:00 -0400 

Range.new((Date.today), (Date.today+7.days)).include?(dateTime) 

基本上我試圖檢查dateTime變量是否在本週內。但我使用Time.new初始化它

回答

5

它可以工作,如果你使它成爲約會。基本上你在比較Time s和Date s。

Range.new(Date.today, Date.today + 7).include?(date_time.to_date) 
2

我想這是因爲你用TimeDate在一起。

如果時間是重要的用途是:

datetime = Time.new(2017, 9, 21, 15, 30) 
(Time.now..Time.now + 7.days).include?(datetime) 

否則使用:

date = Date.new(2017, 9, 21) 
(Date.today..Date.today + 7).include?(date) 

注意,您可以使用7.days只包括ActiveSupport

0

你寫的東西不會檢查日期是否在本週,即使工作,而是檢查日期是否在今天和未來七天之間?

要檢查的日期是「星期」內(從星期一定義爲週日),你可以這樣做:

date_to_check = Time.utc(2017, 9, 21, 15, 30) 
week_start = Time.now.utc.beginning_of_week 
week_end = Time.now.utc.end_of_week 

date_to_check >= week_start && date_to_check <= week_end 
=> true 

使用UTC,但你可以忽略它。在Time.utc上使用Time.new替代,然後在week_start & end上省略.utc