【问题标题】:How do I get a Date from a week number?如何从周数中获取日期?
【发布时间】:2010-12-08 15:48:28
【问题描述】:

我想查找在给定周内创建的所有项目,并传入周数参数。 (created_at 是一个普通的时间戳。)

给定一个星期数,在该特定星期查找日期的最简单方法是什么? (一周中的任何日期都可以,因为我将在范围内使用 begin_of_week 和 end_of_week。)

【问题讨论】:

  • 假设您还有一些年份数据(超出当前系统年份),否则事情会在每个新年的结束/开始时变得有趣。
  • 你需要说出你想使用哪个周数定义(周围有几个)。
  • 我认为如果我将范围设为 Date.today +/- 6 个月,这个应用程序会很好,这样我就可以绕过新年问题。
  • 我从 date.cweek 中获取周数。如果这是由我的默认语言环境决定的,我没有调查。不过我会测试一下。 (这是一个超级本地应用,所以我认为这不会是一个问题。)

标签: ruby-on-rails ruby


【解决方案1】:

您可以使用 commercial 方法获取表示一周开始和结束的 Date 对象:

week = 41;

wkBegin = Date.commercial(2010, week, 1)
wkEnd = Date.commercial(2010, week, 7)

现在做你的发现:

  Item.find(:all, :conditions->:create_date=>wkBegin..wkEnd.end_of_day)

【讨论】:

  • 很好,不知道 Date.commercial
  • 您将需要 wkEnd.end_of_day 否则您的范围将无法覆盖一整周。 (wkEnd.to_time - wkBegin.to_time) / 1.day.seconds => 6.0
【解决方案2】:

假设您的意思是“当前年份的给定周数”,您可以执行以下操作:

2.weeks.since(Time.gm(Time.now.year))
=> Fri Jan 15 00:00:00 UTC 2010

(week_number - 1) 替换为上述1,您将获得所需周的日期。

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    相关资源
    最近更新 更多