从今天起在 ruby​​ 中获取接下来 7 天名称的数组

Puj*_*arg 5 ruby ruby-on-rails ruby-on-rails-6

嗨,我想从今天开始形成一个接下来 7 天的数组,例如:假设今天是星期天,所以结果应该是

["Sunday","Monday","Tuesday",'Wednesday","Thursday","Friday","Saturday"]
Run Code Online (Sandbox Code Playgroud)

Car*_*and 7

require 'date'

Date::DAYNAMES.rotate(Date.today.wday)
  #=> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
  #    "Friday", "Saturday"]
Run Code Online (Sandbox Code Playgroud)

因为Date.today.wday #=> 0(周日)。如果今天是星期二,Date.today.wday #=> 2那么

Date::DAYNAMES.rotate(2)
  #=> ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
  #    "Sunday", "Monday"]
Run Code Online (Sandbox Code Playgroud)

请参阅数组#旋转


jcd*_*cdl 6

这是一个很好的小衬里,可以做你想做的事。

(0..6).map{ |n| (Date.today+n).strftime("%A")}
Run Code Online (Sandbox Code Playgroud)

假设今天是星期六,这将产生:

["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
Run Code Online (Sandbox Code Playgroud)

每个部分的快速解释: (0..6)创建一个数字数组:[0, 1, 2, 3, 4, 5, 6]

.map { |n| ... }是在上述数组上调用的函数,它一次将每个元素作为n

(Date.today+n)是代表今天的对象(基于您的系统时钟)。它允许您向其添加一个数字来偏移日期,从而创建一个新对象。

最后.strftime("%A")}在偏移日期对象上调用以从日期对象生成字符串。该"%A"是本周的字符串一天的格式指令。

  • 您还可以使用“7.times”代替范围。 (3认同)

Raf*_*sco 5

使用 Ruby on Rails,您可以这样做:

today = DateTime.now
(today..(today + 7.days)).map { |date| date.strftime("%A") }

=> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
Run Code Online (Sandbox Code Playgroud)

您将控制接下来的尺寸修改7.days部分。

此问答支持的答案