将字符串的持续时间转换为秒

rub*_*ist 0 ruby

我需要将持续时间转换为秒.我如何在红宝石中做到这一点?我得到了字符串

1小时10分钟

我需要将其转换为秒,即 1*60*60 + 10*60 = 4200 seconds

在ruby中有任何功能吗?或者我是否需要使用常规表达并提取两者并将小时转换为秒,将转换为秒.什么是实现它的最佳方式.

Dav*_*ton 5

使用慢性持续时间,例如,

irb> require "chronic_duration"
irb> ChronicDuration.parse("1hr 10min")
=> 4200
Run Code Online (Sandbox Code Playgroud)

这也让你走另一条路,处理各种输入等.

irb > ChronicDuration.output(4200)
=> "1 hr 10 mins"
irb > ChronicDuration.output(4200, format: :short)
=> "1h 10m"
irb > ChronicDuration.output(1299600)
=> "15 days 1 hr"
irb > ChronicDuration.output(1299600, weeks: true)
=> "2 wks 1 day 1 hr"
Run Code Online (Sandbox Code Playgroud)