2010-01-25 83 views
3

我能做到这一点我自己当然的,但有内置在Ruby中,或库功能,它可以让我做这样的事情从单一的日期获取日期范围

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

感谢

+3

你问过8个问题,并没有接受任何解答。如果答案对您有所帮助,请点击答案左侧的勾号接受答案。谢谢! – 2010-01-25 17:27:36

回答

6

使用ActiveSupport宝石。但是,它认为星期一是本周的开始。

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] 
+0

完美,非常感谢 – blogofsongs 2010-01-25 21:32:13

0

天由0..6表示,星期日为一周中的0

date = Time.now 
puts date.wday 

将输出各国号码。

你想完成什么?

加上或减去一天你到不同的日期正好是1日从现在的秒数。

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

这些问题明确要求创业板精简此操作(以及类似操作)的可视化表示。这并没有真正回答他的问题。 – 2010-01-25 21:26:26

+0

你有没有发现客户真的不知道他想要什么(不是专指你,blogofsongs) – 2010-01-26 00:21:27