无法将毫秒转换为格式良好的小时,分​​钟和秒字符串

时间:2016-06-15 01:59:44

标签: ruby-on-rails-4 time string-formatting milliseconds

我正在使用Rails 4.2.3。我想花费一些时间(毫秒)(持续时间,而不是UTC时间)并将其转换为小时,分钟和秒。我正在尝试这个

    Time.at(time_in_ms).utc.strftime("%H:%M:%S") 

但这似乎不起作用。例如,在我的POstGresql数据库中,我有这个毫秒数

3601000

以上就是生产

16:16:40

即使它应该产生类似“1:00:01”(一小时一秒)的东西。将时间(以毫秒为单位)转换为格式良好的小时,分​​钟和秒的正确方法是什么?

1 个答案:

答案 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