如何在Ruby中轻松将8.周转换为"8 weeks"?



在Ruby中,你可以有8.weeks类型为ActiveSupport::Duration。 如何轻松地将其转换为字符串'8 weeks'? 最好不要进行将周转换为秒然后将其除以一周中的秒数的数学运算。

另外,如何轻松地将50.days转换为字符串'7 weeks and 1 day'? 请注意,我在这里没有使用"月",最好不要在数学中计算秒数。

对于第一部分:

8.weeks.inspect # => "8 weeks"

对于第二部分:

((50.days / 1.week).weeks + (50.days % 1.week)).inspect # => "7 weeks and 1 day"

在 Ruby 中,你可以有 8.week 的类型为 ActiveSupport::D uration。

这不是由Ruby实现的,而是由ActiveSupport提供的猴子补丁。

由于您已经使用了ActiveSupport,我希望您希望将其与Rails结合使用。您可以使用distance_of_time_in_words帮助程序。这是一个视图助手,所以有点痛苦。

ApplicationController.helpers.distance_of_time_in_words(8.weeks)
# -> about two months

如果您需要更多详细信息,请查看实现并适应您的需求。根据您的需要,您可能还需要处理 i18n,因此可能会变得相当复杂。

https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/date_helper.rb#L95

在 Rails 控制台中

8.weeks
=> 8 weeks

相关内容

  • 没有找到相关文章

最新更新