Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在RFC3999中编码日期/时间_Ruby - Fatal编程技术网

Ruby 在RFC3999中编码日期/时间

Ruby 在RFC3999中编码日期/时间,ruby,Ruby,在RFC3999中编码日期/时间的正确方法是什么?我是不是应该把冒号给我 我的代码: base="https://api-fxtrade.oanda.com/v1/candles?instrument=" curr="EUR_USD" granularity="H1" #example time: 2014-06-19T15%3A47%3A40Z startTime=(DateTime.now-5000).to_s #current time -5000 seconds endTime=Date

在RFC3999中编码日期/时间的正确方法是什么?我是不是应该把冒号给我

我的代码:

base="https://api-fxtrade.oanda.com/v1/candles?instrument="
curr="EUR_USD"
granularity="H1"
#example time: 2014-06-19T15%3A47%3A40Z
startTime=(DateTime.now-5000).to_s #current time -5000 seconds
endTime=DateTime.now.to_s
myurl=base+curr+"&candleFormat=bidask&granularity="+granularity+"&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start="+startTime+"&end="+endTime
puts "---string:"
puts myurl
puts "---encoded:"
puts URI::encode(myurl)
puts "---correct example:"
puts "https://api-fxtrade.oanda.com/v1/candles?instrument=EUR_USD&start=2014-06-19T15%3A47%3A40Z&end=2014-06-19T15%3A47%3A50Z"
输出(我的目标是让时间如下面最后一行所示):

下面是答案中的代码:

base="https://api-fxtrade.oanda.com/v1/candles?instrument="
curr="EUR_USD"
granularity="H1"
#DID NOT WORK
startTime="2014-06-19T15%3A47%3A40Z" #2014-06-19T15%3A47%3A40Z
endTime=CGI.escape(DateTime.now.to_s) #2016-06-05T04%3A26%3A30-04%3A00
#WORKS
#startTime="2014-06-19T15%3A47%3A40Z"
#endTime="2014-06-19T15%3A47%3A50Z"
puts startTime
puts endTime
myurl = "#{ base }#{ curr }&candleFormat=bidask&granularity=#{ granularity }&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start=#{ startTime }&end=#{ endTime }"
puts myurl
response =HTTParty.get(myurl)

你可以试着这样做,这样可以安全地避开每次约会

require 'cgi'
require 'date'
require 'uri'

base="https://api-fxtrade.oanda.com/v1/candles?instrument="
curr="EUR_USD"
granularity="H1"

startTime=CGI.escape((DateTime.now-5000).to_s)
endTime=CGI.escape(DateTime.now.to_s)
myurl = "#{ base }#{ curr }&candleFormat=bidask&granularity=#{ granularity }&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start=#{ startTime }&end=#{ endTime }"
puts "---encoded:"
puts myurl
这就产生了

https://api-fxtrade.oanda.com/v1/candles?instrument=EUR_USD&candleFormat=bidask&granularity=H1&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start=2002-09-26T23%3A55%3A31-04%3A00&end=2016-06-04T23%3A55%3A31-04%3A00
当url解码器在其中一个日期上运行时,它将解码回

2016-06-04T23:55:31-04:00

你可以试着这样做,这样可以安全地避开每次约会

require 'cgi'
require 'date'
require 'uri'

base="https://api-fxtrade.oanda.com/v1/candles?instrument="
curr="EUR_USD"
granularity="H1"

startTime=CGI.escape((DateTime.now-5000).to_s)
endTime=CGI.escape(DateTime.now.to_s)
myurl = "#{ base }#{ curr }&candleFormat=bidask&granularity=#{ granularity }&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start=#{ startTime }&end=#{ endTime }"
puts "---encoded:"
puts myurl
这就产生了

https://api-fxtrade.oanda.com/v1/candles?instrument=EUR_USD&candleFormat=bidask&granularity=H1&dailyAlignment=0&alignmentTimezone=America%2FNew_York&start=2002-09-26T23%3A55%3A31-04%3A00&end=2016-06-04T23%3A55%3A31-04%3A00
当url解码器在其中一个日期上运行时,它将解码回

2016-06-04T23:55:31-04:00

我尝试了你的代码并更新了我的帖子。你知道为什么没用吗?API请求失败了,但是当我使用字符串日期(上面注释掉)时,它工作得很好。我的代码由于API错误而失败,你的代码工作得很好。我尝试了你的代码并更新了我的帖子。你知道为什么没用吗?API请求失败了,但是当我使用字符串日期(上面注释掉)时,它工作得很好。我的代码由于API错误而失败,您的代码工作得很好