我正在尝试与Time.local共度时光,这在我的代码中是动态的。在每个月的第一天,我传递的值是Time.local(2009,9,-1,0)。在PHP中,这将把时间设置为上个月的最后一天。在ruby中我只得到“ArgumentError:参数超出范围”。
我使用了错误的方法还是什么?谢谢。
答案 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
并通过更易理解的代码获得所需内容。