我需要执行以下转换:

0     -> 12.00AM
1800  -> 12.30AM
3600  -> 01.00AM
...
82800 -> 11.00PM
84600 -> 11.30PM

我想到了这个:
(0..84600).step(1800){|n| puts "#{n.to_s} #{Time.at(n).strftime("%I:%M%p")}"}

这给了我错误的时间,因为时间。at(n)期望n是纪元后的秒数:
0     -> 07:00PM
1800  -> 07:30PM
3600  -> 08:00PM
...
82800 -> 06:00PM
84600 -> 06:30PM

对于这种转换,什么是最佳的、与时区无关的解决方案?

最佳答案

最简单的一行代码忽略了日期:

Time.at(82800).utc.strftime("%I:%M%p")

#-> "11:00PM"

关于ruby-on-rails - Ruby/Rails-如何将秒转换为时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3963930/

10-08 22:29