Ruby日期参数超出范围

时间:2009-09-01 09:00:55

标签: ruby

我正在尝试与Time.local共度时光,这在我的代码中是动态的。在每个月的第一天,我传递的值是Time.local(2009,9,-1,0)。在PHP中,这将把时间设置为上个月的最后一天。在ruby中我只得到“ArgumentError:参数超出范围”。

我使用了错误的方法还是什么?谢谢。

1 个答案:

答案 0 :(得分:10)

您应该使用DateTime类而不是Time。 (您可能需要require 'date'并首先安装activesupport gem。)

它比Time更加通用,可以用DateTime.civil(2009,9 - 1,-1,0)完成你想要的任务。

当天传递-1会给出第二个参数中月份最后一天的日期,因此您必须从当前月份中减去1。

如果您使用的是Rails,则只需执行DateTime.civil(2009,9,1,0) - 1.day并通过更易理解的代码获得所需内容。