无法将毫秒转换为格式良好的小时、分钟和秒字符串
Having trouble converting milliseconds to a nicely formatted hours, minutes, and seconds string
我正在使用 Rails 4.2.3。我想以毫秒为单位(持续时间,而不是 UTC 时间)并将其转换为小时、分钟和秒。我正在尝试这个
Time.at(time_in_ms).utc.strftime("%H:%M:%S")
但这似乎不起作用。例如,在我的 POStGresql 数据库中,我有这个毫秒数
3601000
上面正在生成
16:16:40
即使它应该产生类似“1:00:01”(一小时零一秒)的结果。将以毫秒为单位的时间转换为格式正确的小时、分钟和秒的正确方法是什么?
Time.at()
预计在 秒 之后 某个纪元 - 1970 年 1 月 1 日 00:00:00 UTC -所以您的代码需要先将 ms
数字除以 1000:
Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S")
编辑: 我刚刚重新检查了 Ruby 文档:下面的骑手 不正确 !假定传入的秒数采用 UTC,因此 at()
进行计算,然后考虑 UTC 偏移量。上面的 .utc
取消了因式分解,并且是必需的。
当然,该代码的问题将成为您当前的时区。假设您使用的是 UTC-5(纽约时间):Time.at(3601000/1000)
变为 "01:00:01"
当地时间。将其转换为 UTC 将从小时数字中减去五个小时,使其成为 "20:00:01"
。因此,也删除您的 .utc
转换:
Time.at(time_in_ms/1000).strftime("%H:%M:%S")
我正在使用 Rails 4.2.3。我想以毫秒为单位(持续时间,而不是 UTC 时间)并将其转换为小时、分钟和秒。我正在尝试这个
Time.at(time_in_ms).utc.strftime("%H:%M:%S")
但这似乎不起作用。例如,在我的 POStGresql 数据库中,我有这个毫秒数
3601000
上面正在生成
16:16:40
即使它应该产生类似“1:00:01”(一小时零一秒)的结果。将以毫秒为单位的时间转换为格式正确的小时、分钟和秒的正确方法是什么?
Time.at()
预计在 秒 之后 某个纪元 - 1970 年 1 月 1 日 00:00:00 UTC -所以您的代码需要先将 ms
数字除以 1000:
Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S")
编辑: 我刚刚重新检查了 Ruby 文档:下面的骑手 不正确 !假定传入的秒数采用 UTC,因此 at()
进行计算,然后考虑 UTC 偏移量。上面的 .utc
取消了因式分解,并且是必需的。
当然,该代码的问题将成为您当前的时区。假设您使用的是 UTC-5(纽约时间):Time.at(3601000/1000)
变为 "01:00:01"
当地时间。将其转换为 UTC 将从小时数字中减去五个小时,使其成为 "20:00:01"
。因此,也删除您的 .utc
转换:
Time.at(time_in_ms/1000).strftime("%H:%M:%S")