传递给CGI时的DateTime语法错误

时间:2016-06-08 14:08:27

标签: ruby datetime

我一直试图解决这个语法错误一段时间,似乎无法弄明白。 DateTime没有返回可以由CGI.escape解释的对象吗?....基于我在DateTime文档中读到的内容,我的代码似乎应该可以工作。

错误

getTimes.rb:6: syntax error, unexpected tIDENTIFIER, expecting ')'
endTime=CGI.escape(DateTime.new(2016, 6, 24, 8, 21, 0, ‘+5’))

代码:

require 'cgi'
require 'date'
#new([year=-4712[, month=1[, mday=1[, hour=0[, minute=0[, second=0[, offset=0[, start=Date::ITALY]]]]]]]]) → datetime
startTime=DateTime.now
#startTime=CGI.escape(DateTime.new(2015, 12, 24, 8, 21, 0, ‘+5’))
endTime=CGI.escape(DateTime.new(2016, 6, 24, 8, 21, 0, ‘+5’))

puts startTime
puts endTime

如果它改变了东西,我正在使用ruby 2.3。

2 个答案:

答案 0 :(得分:1)

你为什么用'?试试单引号'

答案 1 :(得分:1)

问题是您传递给DateTime.new的最后一个参数:

endTime=CGI.escape(DateTime.new(2016, 6, 24, 8, 21, 0, ‘+5’))

这:‘+5’应为:'+5'

当人们使用通用文本编辑器(例如OS X上的TextEdit)自动将引号转换为“智能引号”时,我发现此问题会突然出现。最好的解决方案是切换到用于编程的编辑器(如OS X上的SublimeText或Atom)。在此期间,请确保在您使用的任何编辑器中关闭“智能引号”和其他自动文本更正/替换。