【问题标题】:Rail's end_of_month() method always return 30 as last dateRail 的 end_of_month() 方法总是返回 30 作为最后日期
【发布时间】:2019-06-07 08:08:13
【问题描述】:

我正在使用 ruby​​ 2.3.6 和 rails 5.1 并希望返回上个月的最后日期。按照现在的时间应该是2019年5月31日。

所以我用过

DateTime.now.end_of_month.prev_month 

得到了

Sat, 30 May 2019 23:59:59 +0530

作为响应,它应该是 31。我也在 3 月和 1 月尝试了同样的方法。知道为什么会出现这种行为吗?

【问题讨论】:

  • 我的错,在标题中修复了。
  • "知道为什么会有这种行为吗?" – 好吧,DateTime.now.end_of_month 返回30 Jun 2019 并调用prev_month 将其变为30 May 2019。这是预期的行为。

标签: ruby-on-rails ruby time


【解决方案1】:

试试

DateTime.now.prev_month.end_of_month

只需切换最后两个调用

【讨论】:

    【解决方案2】:

    prev_month 是不改变并考虑日期或日期并仅获取上个月的方法。

    您可以使用二月份的月份进行验证,

    (DateTime.now.end_of_month - 4.month).prev_month
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2020-08-16
      • 2016-05-07
      • 2019-03-02
      相关资源
      最近更新 更多