【问题标题】:Obtain a date range from a single date从单个日期获取日期范围
【发布时间】:2010-01-25 17:14:53
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 您已提出 8 个问题,尚未接受任何答案。如果答案对您有所帮助,请单击答案左侧的勾号接受。谢谢!

标签: ruby date date-range


【解决方案1】:

使用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]

【讨论】:

    【解决方案2】:

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

    date = Time.now
    puts date.wday 
    

    将输出今天的本周数字代码。

    你想完成什么?

    通过添加或减去一天中的秒数,您将在 1 天后到达另一个日期。

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

    【讨论】:

    • 这些问题专门要求使用 gem 来简化此操作(以及类似操作)的视觉表示。这并不能真正回答他的问题。
    • 你有没有发现客户真的不知道他想要什么(不是特指你,blogofsongs)
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多