gpt4 book ai didi

ruby-on-rails - 提供日期范围的更好方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:39 26 4
gpt4 key购买 nike

我在 rails 中创建了这样一个日期时间范围:

last_3_months = (Date.today - 3.month)..Date.today
next_40_days = Date.today..(Date.today + 40.days)

在 Ruby 中有没有更好的方法来提高可读性?像这样的东西:

last_3_months = 3.months.ago.to_range
next_40_days = 40.days.from_now.to_range

非常感谢!

最佳答案

Rails 不提供任何辅助方法来根据日期创建日期范围。因此,对您的问题的简短回答是“否”。

但是,您可以使用 ActiveSupport::Duration 方法略微提高代码的可读性。当您执行 3.months 之类的操作时,它会返回。

3.month.ago.to_date..Date.current
Date.current..40.days.from_now.to_date

如果您决定对一个类进行 monkeypatch 以添加额外的功能,它应该是 ActiveSupport::Duration 而不是内置的 Time/DateTime类。


注意:

您将 ActiveSupport::TimeWithZone 类实例与不支持时区 (Date) 的类实例混合在一起。 3.months.ago 返回一个 ActiveSupport::TimeWithZone 的实例,您正在添加范围的另一边,没有任何时区信息。这可能会导致难以捕获错误。因此,最好使用 Date.current 而不是 Date.today

关于ruby-on-rails - 提供日期范围的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37989858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com