ruby-on-rails - Ruby/Rails - 如何将秒数转换为时间?

标签 ruby-on-rails ruby time timestamp seconds

我需要执行以下转换:

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")}"}

这给了我错误的时间,因为 Time.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/

相关文章:

ruby-on-rails - 在 Ruby 中通过递归嵌套哈希

ruby - 在 Ruby 中获取调用者的模块

php - 在 php.ini 中更改了时区但 date() 仍然不正确

ruby-on-rails - 参数化 JSON 键命名

ruby-on-rails - Elasticsearch /轮胎 : How to map to association attribute?

c - 简单的 c 程序不产生所需的输出

java - 如何将 "2019-04-11T05:00:54.000+01:00"转换为 dd/MM/yyyy hh :mm format

mysql - 如何监控rails应用程序和mysql数据库之间的连接是否建立

ruby-on-rails - OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 读取服务器证书 B: 证书验证失败

ruby-on-rails - Rails,带有嵌套 HTML 的标签,使用 FormBuilder 和 Devise,带有 Bootstrap 标记