运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

ruby-on-rails – Ruby(使用Rails)将一串时间转换为秒?

运维开发网 https://www.qedev.com 2020-07-31 19:51 出处:网络 作者:运维开发网整理
所以,我有一串时间……有些事情 '4 hours' '48 hours' '3 days' '15 minutes' 我想将这些转换为秒.对于’4小时’,这很好 Time.parse('4 hours').to_i - Time.parse('0 hours').to_i => 14400 # 4 hours in seconds, yay 但是,这在48小时内不起作用(超出范围误差).它也不工作
所以,我有一串时间……有些事情

'4 hours'
'48 hours'
'3 days'
'15 minutes'

我想将这些转换为秒.对于’4小时’,这很好

Time.parse('4 hours').to_i - Time.parse('0 hours').to_i
=> 14400 # 4 hours in seconds, yay

但是,这在48小时内不起作用(超出范围误差).它也不工作3天(没有信息错误)等.

有没有一种简单的方法将这些字符串转换为秒?

你问Ruby与Time.parse的关系是确定一天中的某个时间.那不是你想要的.我能想到的所有库在这方面都是相似的:他们对绝对时间感兴趣,而不是时间长度.

要将您的字符串转换为我们可以使用的时间格式,我建议使用Chronic(gem install chronic).要转换为秒,我们可以执行与当前时间相关的所有操作,然后根据需要减去该时间以获得绝对秒数.

def seconds_in(time)
    now = Time.now
    Chronic.parse("#{time} from now", :now => now) - now
end

seconds_in '48 hours'   # => 172,800.0
seconds_in '15 minutes' # => 900.0
seconds_in 'a lifetime' # NoMethodError, not 42 ;)

几个快速笔记:

>从现在开始是需要慢性病的原因 – 它处理自然语言输入.>我们现在指出,对于Time.now从Chronic做出它的魔法时间和从结果中减去它的时间的变化来说是安全的.它可能永远不会发生,但我认为这比对不起更安全.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号