我一直试图解决这个语法错误一段时间,似乎无法弄明白。 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。
答案 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)。在此期间,请确保在您使用的任何编辑器中关闭“智能引号”和其他自动文本更正/替换。