gpt4 book ai didi

ruby - 在 Ruby 中转换军事时间

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:35 25 4
gpt4 key购买 nike

在 Ruby 中将军事(24 小时制)格式转换为 HH:MM 格式的最简单方法是什么?

我在记录中存储了两个 24 小时时间值,当以两个整数值(例如 1400 和 1600)开始时,我想在 View 中将它们显示为类似“2:00 - 4:00”的内容。

我的 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

我什至不确定它是否一直有效。我假设有更好的方法来做到这一点。

更新:我还需要它来处理不以“00”结尾的值。 IE 1430 或 830。

最佳答案

您可以使用 Time.strptime 解析字符串以获取时间对象。这可以用来打印Time.strftime:

require 'time'

%w{1400 1600}.each{|t|
p Time.strptime(t, '%H%M').strftime('%l:%M')
}

优点:输入输出格式的改变非常容易。

备选方案:

require 'date'  #load DateTime.strptime

%w{1400 1600}.each{|t|
p DateTime.strptime(t, '%H%M').strftime('%l:%M')
}

我希望 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')
}

关于ruby - 在 Ruby 中转换军事时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com