在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