一年的周数,有点

jsh*_*rpe 27 ruby time date

最好是红宝石,但逻辑足够好......

鉴于本周非标准,我需要一年中的周数.所以,假设您将周定义为星期六 - >星期五.然后,给定一个日期,这个周数(1-52)是什么?

strftime有%U:

> Time.now.strftime('%U')
> => "28"
Run Code Online (Sandbox Code Playgroud)

...但当然假设标准星期日 - >星期六.

gio*_*ele 27

使用%W而不是%U,它使用星期一作为一周的第一天.

Time.now.strftime('%W')
Run Code Online (Sandbox Code Playgroud)

  • 但它是零索引,而不是`Date.today.cweek`形式@ fl00r的答案. (5认同)

fl0*_*00r 22

class Date
  def sweek
    date = self + 1
    date.cweek
  end
end

# Today is Sunday, 17 July
Date.today.cweek
#=> 28
Date.today.sweek
#=> 29
Run Code Online (Sandbox Code Playgroud)

  • @akostadinov:你很久以前就得到了这个,但是对于后人来说,`Time.new.strftime('%W')`返回一个字符串,而'Time.new.to_date.cweek`返回一个整数,所以它们不是期望是平等的. (3认同)

Son*_*nül 3

也许可以这样做;

def week_dates( week_num )
    year = Time.now.year
    week_start = Date.commercial( year, week_num, 1 )
    week_end = Date.commercial( year, week_num, 7 )
    week_start.strftime( "%m/%d/%y" ) + ' - ' + week_end.strftime( 
"%m/%d/%y" )
  end
Run Code Online (Sandbox Code Playgroud)