将数字转换为星期几-Ruby
我有以下数据:将数字转换为星期几-Ruby,ruby,Ruby,我有以下数据: data = [{"day":0,"count":1.0},{"day":1,"count":1.1666666666666667},{"day":2,"count":2.625},{"day":3,"count":2.0},{"day":4,"count":3.8},{"day":5,"count":1.2},{"day":6,"count":41.666666666666664}] 我试过两种不同的方法,但都不明白。是否有办法将天整数转换为一周中的某一天(例如,“Sunda
data = [{"day":0,"count":1.0},{"day":1,"count":1.1666666666666667},{"day":2,"count":2.625},{"day":3,"count":2.0},{"day":4,"count":3.8},{"day":5,"count":1.2},{"day":6,"count":41.666666666666664}]
我试过两种不同的方法,但都不明白。是否有办法将天整数转换为一周中的某一天(例如,“Sunday”为0),然后将其从周一开始,这样最终结果将是:
[{"day":"Monday","count":1.1666666666666667},{"day":"Tuesday","count":2.625},{"day":"Wednesday","count":2.0},{"day":"Thursday","count":3.8},{"day":"Friday","count":1.2},{"day":"Saturday","count":41.666666666666664}, {"day":"Sunday","count":1.0}]
提前感谢您的帮助。您可以在日期模块中使用预定义的
日名
数组
require 'date'
data.map! { |element| element[:day] = Date::DAYNAMES.rotate[element[:day]] }
这将把你的整数转换成一个命名的日期,从星期一开始为零。你可以在日期模块中使用预定义的
日名数组
require 'date'
data.map! { |element| element[:day] = Date::DAYNAMES.rotate[element[:day]] }
这将把你的整数转换成一个命名的日期,从星期一开始为零。我想你要找的是
require 'json'
require 'date'
data = '[{"day":0,"count":1.0},{"day":1,"count":1.1666666666666667},{"day":2,"count":2.625},{"day":3,"count":2.0},{"day":4,"count":3.8},{"day":5,"count":1.2},{"day":6,"count":41.666666666666664}]'
dates = JSON.parse(data).rotate.map do |hsh|
week_day = Date::DAYNAMES[hsh["day"]]
{ "day" => week_day, "count" => hsh["count"] }
end
puts dates.to_json
#=> [{"day":"Monday","count":1.1666666666666667},{"day":"Tuesday","count":2.625},{"day":"Wednesday","count":2.0},{"day":"Thursday","count":3.8},{"day":"Friday","count":1.2},{"day":"Saturday","count":41.666666666666664},{"day":"Sunday","count":1.0}]
我想你要找的是
require 'json'
require 'date'
data = '[{"day":0,"count":1.0},{"day":1,"count":1.1666666666666667},{"day":2,"count":2.625},{"day":3,"count":2.0},{"day":4,"count":3.8},{"day":5,"count":1.2},{"day":6,"count":41.666666666666664}]'
dates = JSON.parse(data).rotate.map do |hsh|
week_day = Date::DAYNAMES[hsh["day"]]
{ "day" => week_day, "count" => hsh["count"] }
end
puts dates.to_json
#=> [{"day":"Monday","count":1.1666666666666667},{"day":"Tuesday","count":2.625},{"day":"Wednesday","count":2.0},{"day":"Thursday","count":3.8},{"day":"Friday","count":1.2},{"day":"Saturday","count":41.666666666666664},{"day":"Sunday","count":1.0}]
您显示的数据
变量实际上是JSON
,这意味着您必须要求“JSON”
,以便ruby能够解析它
接下来,我们需要“date”
,以便我们可以使用ruby将您的天数从数字转换为文字
最后,我们将数据
对象转换回JSON
,以便您可以按预期方式使用它
require 'date'
require 'json'
day = Proc.new { |d| Date::DAYNAMES[d] }
data = '[ {"day":0,"count":1.0},
{"day":1,"count":1.1666666666666667},
{"day":2,"count":2.625},
{"day":3,"count":2.0},
{"day":4,"count":3.8},
{"day":5,"count":1.2},
{"day":6,"count":41.666666666666664} ]'
new_data = JSON.parse(data).map do |n|
{ "day" => day.call(n["day"]), "count" => n["count"] }.to_json
end
puts new_data
您显示的数据
变量实际上是JSON
,这意味着您必须要求“JSON”
,以便ruby能够解析它
接下来,我们需要“date”
,以便我们可以使用ruby将您的天数从数字转换为文字
最后,我们将数据
对象转换回JSON
,以便您可以按预期方式使用它
require 'date'
require 'json'
day = Proc.new { |d| Date::DAYNAMES[d] }
data = '[ {"day":0,"count":1.0},
{"day":1,"count":1.1666666666666667},
{"day":2,"count":2.625},
{"day":3,"count":2.0},
{"day":4,"count":3.8},
{"day":5,"count":1.2},
{"day":6,"count":41.666666666666664} ]'
new_data = JSON.parse(data).map do |n|
{ "day" => day.call(n["day"]), "count" => n["count"] }.to_json
end
puts new_data
您可以使用ruby 1.9哈希语法将符号作为键,但将字符串作为键。因此,要么丢失“day”
和“count”
周围的所有引号,并使它们日期:0,计数:1.0
同时确保冒号后面有空格。或者使用老式的“day”=>0,“count”=>1.0
。它是无效的ruby
,因为它是JSON
@user2270029这个代码是如何使用的?提供更多的背景知识,以便根据您的工作环境定制答案。有多种方法可以做到这一点,下面的答案只适用于哈希和JSON之间的一些转换。因此,要么丢失“day”
和“count”
周围的所有引号,并使它们日期:0,计数:1.0
同时确保冒号后面有空格。或者使用老式的“day”=>0,“count”=>1.0
。它是无效的ruby
,因为它是JSON
@user2270029这个代码是如何使用的?提供更多的背景知识,以便根据您的工作环境定制答案。有多种方法可以做到这一点,下面的答案只适用于哈希和JSON之间的一些转换。它给了我这个结果[“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”,null]对于这个错误,我深表歉意。我错了;指数从零开始。现在修复答案。添加rotate将允许常量数组在星期一开始,而不是您希望的星期天。它将为我提供此结果[“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”,null]对于此错误,我深表歉意。我错了;指数从零开始。现在修复答案。添加旋转将允许常量数组在周一开始,而不是您希望的周日。