我正在尝试检查日期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初始化它
答案 0 :(得分:5)
如果你把它作为日期,它会起作用。基本上您要比较Time
和Date
s。
Range.new(Date.today, Date.today + 7).include?(date_time.to_date)
答案 1 :(得分:2)
我认为这是因为您一起使用Time
和Date
。
如果时间很重要,请使用:
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
一起使用。
答案 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
。