我正在使用Rails 4.2.3。我想花费一些时间(毫秒)(持续时间,而不是UTC时间)并将其转换为小时,分钟和秒。我正在尝试这个
Time.at(time_in_ms).utc.strftime("%H:%M:%S")
但这似乎不起作用。例如,在我的POstGresql数据库中,我有这个毫秒数
3601000
以上就是生产
16:16:40
即使它应该产生类似“1:00:01”(一小时一秒)的东西。将时间(以毫秒为单位)转换为格式良好的小时,分钟和秒的正确方法是什么?
答案 0 :(得分:2)
Time.at()
预计在某个时代之后秒 的时间 - 1970年1月1日00:00:00 - 所以您的代码需要划分{ {1}}先用1000表示:
ms
编辑:我刚刚重新检查了Ruby文档:下面的骑手不正确!传入的秒数假定为UTC,因此Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S")
计算UTC偏移中的因子。以上at()
撤消了因素,并且是必需的。
当然,该代码的问题会成为您当前的时区。假设您在UTC-5(纽约时间):.utc
在当地时间变为Time.at(3601000/1000)
。将其转换为UTC将从小时数减去五个小时,使其成为"01:00:01"
。因此,请删除"20:00:01"
转换:
.utc