gpt4 book ai didi

ruby - 如何将一个简单的时间字符串解析为一个时间段?

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:37 24 4
gpt4 key购买 nike

在我的 Ruby 应用程序中,我有一个 Investment 实体,它有一个 term 属性。

我需要这个类以 3 Years36 months 的形式接受来自用户输入的字符串。我想要的是将输入转换为月数,将 term 属性设置为此期间并计算出到期日。

到目前为止,我已尝试使用 Active Support 和 Chronic,但 API 不支持此功能。

这个 getter 有效:

  def term
if term =~ /year[s]?/i
term = term.to_i * 12
else term =~ /month[s]?/i
term = term.to_i
end
end

但是在 Ruby 中有没有更优雅的方法来做到这一点?

最佳答案

Ruby 没有任何内置的表示“时间跨度”的东西(其他一些语言有)。但是,有一个 library for it (timespan) ,尽管对于您的情况来说可能有点矫枉过正。

你提到 chronic 不支持这个。但为什么不自己计算时差呢?

require 'chronic'

input = '2 years'
then = Chronic.parse(input + ' ago')
now = Time.now

# Now we just calculate the number of months
term = (now.year * 12 + now.month) - (then.year * 12 + then.month)

这样,您就可以获得chronic 解析的灵 active ,而且您仍然不需要太多代码。

或者直接使用 timespan 库。

require 'timespan'

term = Timespan.new('2 years').to_months
# Boom.

关于ruby - 如何将一个简单的时间字符串解析为一个时间段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366563/

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