【问题标题】:`<<': invalid date (ArgumentError) in hash`<<': 哈希中的无效日期 (ArgumentError)
【发布时间】:2012-11-27 22:30:46
【问题描述】:

这是我的代码:

item = []
today = Date.today

dates = {"3 years" => today << 12*3, "2 years" => today << 12*2,
"1.5 years" => today <<  12*1.5,"1 year" => today << 12, "6 months" => today << 6,
"3 months" => today << 3, "today" => today}

我每次运行时都会在以dates... 开头的行上收到此错误`&lt;&lt;': invalid date (ArgumentError)

怎么了? today 应该是一个有效的日期,我尝试在乘法和值字段周围加上括号,但仍然是那个错误。当我在 irb 中尝试时,效果很好。文件顶部需要日期。

【问题讨论】:

  • 在 IRB 1.9.2 中工作得很好。

标签: ruby


【解决方案1】:
"1.5 years" => today <<  12*1.5

这个是罪魁祸首。将其替换为 "1.5 years" =&gt; today &lt;&lt; 18 ,因为 &lt;&lt; 方法显然无法处理浮点数(在 1.9.3 中)。

【讨论】:

  • 是的。 {"1.5 years" =&gt; Date.today &lt;&lt; 12*1.5} ` => {"1.5 年"=>#}`
  • 是的,这就是给我的。不知道为什么它适用于其他人但不适用于我,但当我分隔语句时,这就是引发错误的那一行。将12*1.5 更改为18 后不再出现错误。
【解决方案2】:

你忘记require 'date'了吗?

似乎适用于所有版本。

Here is a proof

【讨论】:

  • 是的,我需要文件顶部的日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 2014-10-23
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多