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

Get array of next 7 days name from today in ruby

你好,我想从今天开始构建接下来 7 天的数组, 示例:假设今天是星期天,那么结果应该是

["Sunday","Monday","Tuesday",'Wednesday","Thursday","Friday","Saturday"]

这是一款不错的小衬垫,可以满足您的需求。

(0..6).map{ |n| (Date.today+n).strftime("%A")}

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

["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

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

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

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

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

在 Rails 上使用 Ruby 你确实喜欢这样:

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

=> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

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

代码

require 'date'
p (Date.today..Date.today+7).map{|d|d.strftime("%A")}

输出

["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
require 'date'

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

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

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

参见 Array#rotate