Ruby日期参数超出范围

seb*_*iop 5 ruby

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

我使用的是错误的方法吗?谢谢.

mru*_*ueg 10

您应该使用DateTime该类而不是Time.(您可能必须首先require 'date'安装activesupportgem.)

它比Time你想要的更多功能DateTime.civil(2009,9 - 1,-1,0).

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

如果你在Rails中,你可以DateTime.civil(2009,9,1,0) - 1.day用更容易理解的代码做到并得到你想要的东西.

  • 不错的,这是一种享受.当我达到15个代表时,我会投票!谢谢 (2认同)