我正在尝试使用在我的代码中是动态的 Time.local 来安排时间。在每个月的第一天,我传递的值是 Time.local(2009, 9, -1, 0)。在 PHP 中,这会将时间设置为上个月的最后一天。在 ruby 中,我只是得到“ArgumentError:参数超出范围”。
是我用错了方法还是什么?谢谢。
最佳答案
您应该使用 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
并使用更易于理解的代码获得您想要的内容。
关于Ruby 日期参数超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361360/