我们有一个持续时间(以秒为单位)值始终大于 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
我几乎做到了,但是零值有一个小问题:
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
感谢您的回答。
为什么不只是像这样简单的事情:
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
产生预期结果的地方:
to_hms(63000)
# => "17 h 30 m"
to_hms(28800)
# => "8 h"
to_hms(1800)
# => "30 m"
| 归档时间: | 
 | 
| 查看次数: | 124 次 | 
| 最近记录: |