我们有一个持续时间(以秒为单位)值始终大于 60(1 分钟)的时间跟踪模型。
如果在小时或分钟开始时它们不为零且不为零,我需要将持续时间转换为小时和分钟。例如:
duration1 = 63000 # expected value: 17 h 30 m
duration2 = 28800 # expected value: 8 h
duration3 = 1800 # expected value: 30 m
duration4 = 300 # expected value: 5 m
Run Code Online (Sandbox Code Playgroud)
我几乎做到了,但是零值有一个小问题:
Time.at(duration1).utc.strftime('%H h %M m').sub!(/^0/, '')
# 17 h 30 m
Time.at(duration2).utc.strftime('%H h %M m').sub!(/^0/, '')
# 8 h 00 m
Time.at(duration3).utc.strftime('%H h %M m').sub!(/^0/, '')
# 0 h 30 m
Time.at(duration4).utc.strftime('%H h %M m').sub!(/^0/, '')
# 0 h 05 m
Run Code Online (Sandbox Code Playgroud)
感谢您的回答。
为什么不只是像这样简单的事情:
def to_hms(time)
hours = time / 3600
minutes = (time / 60) % 60
if (hours > 0 and minutes > 0)
'%d h %d m' % [ hours, minutes ]
elsif (hours > 0)
'%d h' % hours
elsif (minutes > 0)
'%d m' % minutes
end
end
Run Code Online (Sandbox Code Playgroud)
产生预期结果的地方:
to_hms(63000)
# => "17 h 30 m"
to_hms(28800)
# => "8 h"
to_hms(1800)
# => "30 m"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |