在Ruby中将军事(24小时)转换为HH:MM格式的最简单方法是什么?
我有两个24小时的时间值存储在一个记录中,我想在视图中显示它们,如"2:00 - 4:00",当以两个整数值(例如1400和1600)开始时.
我的hack-y解决方案是创建一个辅助函数:
def format_time(time)
if (time-1200 < 1000)
if (time-1200 < 100)
return time.to_s.insert(2, ":")
else
return (time-1200).to_s.insert(1, ":")
end
else
return (time-1200).to_s.insert(2, ":")
end
end
Run Code Online (Sandbox Code Playgroud)
我甚至不确定它是否一直有效.我假设有更好的方法来做到这一点.
更新:我还需要这个来处理不以'00'结尾的值.IE 1430或830.
您可以解析字符串Time.strptime以获取时间对象.这可以用于打印Time.strftime:
require 'time'
%w{1400 1600}.each{|t|
p Time.strptime(t, '%H%M').strftime('%l:%M')
}
Run Code Online (Sandbox Code Playgroud)
优点:输入和输出格式的变化非常简单.
替代方案:
require 'date' #load DateTime.strptime
%w{1400 1600}.each{|t|
p DateTime.strptime(t, '%H%M').strftime('%l:%M')
}
Run Code Online (Sandbox Code Playgroud)
我希望DateTime的解决方案也适用于ruby 1.8.
更新830:此解决方案无法使用830- strptime无法解决%l.但是0830工作正常.在这种情况下,您需要一个适应的解决方
require 'date' #load DateTime
%w{1400 1600 830}.each{|t|
t = '%04i' % t
p DateTime.strptime(t, '%H%M').strftime('%l:%M')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3499 次 |
| 最近记录: |