是否可以将strftime("%u")值快速转换为strftime("%A"),或者我是否需要构建一个等价的散列,如{“星期一”=> 1,.........“星期日”=> 6}
我有一个以某天为十进制值的数组
class_index=[2,6,7]我想循环遍历这个数组来构建一个天数数组,如下所示
[nil, "Tuesday", nil, nil, nil, "Saturday", "Sunday"]所以我可以这样做
class_list=[]
class_index.each do |x|
class_list[x-1] = convert x value to day name
end这有可能吗?
发布于 2011-09-27 00:24:56
这样如何:
require "date"
DateTime.parse("Wednesday").wday # => 3哦,我现在明白你已经扩展了你的问题。这样如何:
[2,6,7].inject(Array.new(7)) { |memo,obj| memo[obj-1] = Date::DAYNAMES[obj%7]; memo }让我来解释一下:
input = [2,6,7]
empty_array = Array.new(7) # => [nil, nil, nil, nil, nil, nil, nil]
input.inject(empty_array) do |memo, obj| # loop through the input, and
# use the empty array as a 'memo'
day_name = Date::DAYNAMES[obj%7] # get the day's name, modulo 7 (Sunday = 0)
memo[obj-1] = day_name # save the day name in the empty array
memo # return the memo for the next iteration
end红宝石的美丽。
发布于 2011-09-27 00:29:34
将小数转换为工作日:
require 'date'
Date::DAYNAMES[1]
# => "Monday"因此,在您的示例中,您可以简单地执行以下操作:
class_list=[]
class_index.each do |x|
class_list[x-1] = Date::DAYNAMES[x-1]
end发布于 2011-09-27 00:32:03
下面是我脑海中浮现的一个方法:
require "date"
def weekday_index_to_name(index)
date = Date.parse("2011-09-26") # Canonical Monday.
(index - 1).times { date = date.succ }
date.strftime("%A")
endhttps://stackoverflow.com/questions/7558074
复制相似问题