Ruby on rails 将字符串转换为日期时间轨道

Ruby on rails 将字符串转换为日期时间轨道,ruby-on-rails,ruby-on-rails-3,highcharts,Ruby On Rails,Ruby On Rails 3,Highcharts,我正在使用LazyHighCharts并试图将json数据转换为仅显示最近24小时,但在将日期和时间(“2014-06-16 16:00:00”)转换为毫秒时遇到了一些问题 数据结构 {"status": "ok", "data": [{"2014-06-16 16:00:00": 24.2},{"2014-06-17 12:00:00": 30.2},{"2014-06-18 17:00:00": 42.9}]} etc 控制器 @data = JSON.parse(open(@temper

我正在使用LazyHighCharts并试图将json数据转换为仅显示最近24小时,但在将日期和时间(“2014-06-16 16:00:00”)转换为毫秒时遇到了一些问题

数据结构

{"status": "ok", "data": [{"2014-06-16 16:00:00": 24.2},{"2014-06-17 12:00:00": 30.2},{"2014-06-18 17:00:00": 42.9}]} etc
控制器

@data = JSON.parse(open(@temperature.url).read)

dates = []
temps = []

@data['data'].each do |data|
 dates << data.keys
 temps << data.values
end 

datetime = dates.each do |d| DateTime.parse(d).to_i end

@graph = LazyHighCharts::HighChart.new('graph') do |f|
 f.chart(:height => '400')
 f.yAxis [:title => {:text => "Temperature", :margin => 20, style: { color: '#333'}}]
 f.series(:pointInterval => 1.hour, :pointStart => 30.day.ago, :type => 'area', :name => '24hrs', :data => [[datetime, temps]])
 f.options[:xAxis] = { :minTickInterval => 24 * 3600 * 1000, :type => "datetime", :dateTimeLabelFormats => { day: "%b %e"}, :title => { :text => nil }, :labels => { :enabled => true } }
end
@data=JSON.parse(打开(@temperature.url).read)
日期=[]
temps=[]
@数据['data'],每个都有|个数据|
日期{:文本=>“温度”,边距=>20,样式:{颜色:'#333'}]
f、 系列(:pointInterval=>1.hour,:pointStart=>30.day.ago,:type=>'area',:name=>'24hrs',:data=>[[datetime,temps]])
f、 选项[:xAxis]={:minTickInterval=>24*3600*1000,:type=>“datetime”,“dateTimeLabelFormats=>{day:“%b%e”},:title=>{:text=>nil},:labels=>{:enabled=>true}
结束

在Rails中,您可以使用以下命令将格式正确的字符串转换为毫秒:

"2014-06-16 16:00:00".to_datetime.strftime('%Q')

您需要将字符串转换为dateTime作为第一个, 使用此代码:

DateTime.parse("2011-05-19 10:30:14").strftime('%Q')
或此代码:

"2014-06-16 16:00:00".to_datetime.strftime('%Q')
因此,您可以按如下方式转换日期字符串数组:

dates.map!{|d| d.to_datetime.strftime('%Q')}

助手链接:,

谢谢大家,我理解这种格式,但不确定如何使用json中的data.keys实现它?说'dates.to_datetime.strftime('%Q')'会给我'undefined method'to_datetime'for#'使用此代码
dates.map!{| d | d.to_datetime.strftime('%Q')}
干杯。。。获取[“2014-08-12 10:00:00”]:数组的“未定义方法`to_datetime'时出错。好的,请尝试另一个代码
dates.map!{| d | DateTime.parse(d).strftime('%Q')}
,但是第一个代码是在rails控制台上与我一起工作的:)同样的问题。谢谢你的努力。不知道这里有什么问题。