从单个日期获取日期范围

时间:2010-01-25 17:14:54

标签: ruby date date-range

我当然可以自己做,但Ruby或库中有内置功能,可以让我做这样的事情

date = Time.now
sunday = date.week.first_day
saturday = date.week.last_day

由于

2 个答案:

答案 0 :(得分:6)

使用ActiveSupport gem。但是,它将周一视为本周的开始。

require 'active_support'
d = Date.today                     # => Mon, 25 Jan 2010
sun = d.beginning_of_week - 1.day  # => Sun, 24 Jan 2010
sat = d.end_of_week - 1.day        # => Sat, 30 Jan 2010

如果今天是星期天,需要更多的工作

def week_ends(date)
  sun = date.beginning_of_week - 1.day
  sat = date.end_of_week - 1.day
  if date.sunday?
    sun += 1.week
    sat += 1.week
  end
  [sun, sat]
end

p d = Date.today
p week_ends(d)

p d = Date.yesterday
p week_ends(d)

结果

Mon, 25 Jan 2010
[Sun, 24 Jan 2010, Sat, 30 Jan 2010]
Sun, 24 Jan 2010
[Sun, 24 Jan 2010, Sat, 30 Jan 2010]

答案 1 :(得分:0)

天数由0..6表示,星期日为0。

date = Time.now
puts date.wday 

将输出今天的数字代码。

你想要完成什么?

通过添加或减去一天中您到达不同日期的一天的秒数。

date = Time.now
puts date + 86400 #will be tomorrow