Ruby 日期参数超出范围

标签 ruby

我正在尝试使用在我的代码中是动态的 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/

相关文章:

ruby - 在 ruby 中穿插功能?

ruby-on-rails - 在 Linux 上,如何解决 WARNING : Nokogiri was built against LibXML version 2. 8.0,但已动态加载 2.9.0?

ruby-on-rails - ByeBug 调试器只工作一次 [Rails 4]

ruby-on-rails - Ruby 中的一切都可以在 Rails 中使用吗?

ruby - 如何将设置保存为外部文件中的散列?

ruby - 如何告诉 Ruby 不要序列化属性或如何正确重载 marshal_dump?

c# - 在 .NET/C# 中是否有类似 Ruby 中的 Or-Equals 的东西?

python - beagleboard 可以运行 python 或 Ruby 程序吗?

ruby-on-rails - 从 Delayed Jobs 迁移到 Sidekiq

ruby - 将数组作为参数添加到 ruby​​ 中的 sql 查询