我想从周五开始计算周数。
更多解释:通常在星期日或星期一开始计票,但在这种情况下,我想在星期五开始计算。
一些例子:
2nd Jan 2015 (Fri) ~ 8th Jan 2015 (Thu) : 1st week of 2015
...
25th Dec 2015 (Fri) ~ 31st Dec 2015 (Thu) : 52nd week of 2015
1st Jan 2016 (Fri) ~ 7th Jan 2016 (Thu) : 1st week of 2016
...
30th Dec 2016 (Fri) ~ 5th Jan 2017 (Thu) : 53rd week of 2016
6th Jan 2017 (Fri) ~ 12th Jan 2017 (Thu) : 1st week of 2017
我需要做的是
1)从日期获得周数
离。
input: Fri, 02 Jan 2015
output: 1
input: Sun, 27 Dec 2015
output: 52
2)获取给定周数的日期范围。
我发现.strftime("%V")
几乎可以做到这一点,但每个星期一它会计算几周。
有没有人知道这个很好的解决方案?
答案 0 :(得分:2)
你走了:
my_array = Array.new
(Date.today..Date.today.next_year).each do |date|
if date.wday == 5
end_week = date + 6.days
my_array << "#{date.day.ordinalize} #{date.strftime('%b')} #{date.strftime('%Y')} (#{date.strftime('%a')}) ~ #{end_week.day.ordinalize} #{end_week.strftime('%b')} #{end_week.strftime('%Y')} (#{end_week.strftime('%a')}) : #{date.strftime('%U')} week of #{date.strftime('%Y')}"
end
end
# sample output of first element of array
# 30th Oct 2015 (Fri) ~ 5th Nov 2015 (Thu) : 43 week of 2015
注意:您可以设置任何范围。我在这里设置了Today
到next year
%U - 当前年份的周数,从第一个星期日开始 作为第一周的第一天(00..53)
%W - 当前年份的周数,从第一个星期一开始 作为第一周的第一天(00..53)
了解更多信息:http://apidock.com/rails/ActiveSupport/TimeWithZone/strftime
答案 1 :(得分:0)