检查范围内的日期

时间:2017-09-20 18:07:38

标签: ruby-on-rails ruby

我正在尝试检查日期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初始化它

3 个答案:

答案 0 :(得分:5)

如果你把它作为日期,它会起作用。基本上您要比较TimeDate s。

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

答案 1 :(得分: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.daysActiveSupport一起使用。

答案 2 :(得分: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