从时间戳开始的最近午夜的时间戳

时间:2013-04-10 15:03:58

标签: ruby

我有时间戳

timestamp = Time.now.utc.to_f

我需要在同一天的UTC午夜找到时间戳:

t = Time.at timestamp
Time.at(((t - t.hour * 3600).to_f / 3600).to_i * 3600).to_f

有没有办法获得相同的时间戳而无需将原始timestamp转换为Time对象?以类似于将时间戳舍入到最近一小时的方式:

(timestamp / 3600).to_i * 3600

1 个答案:

答案 0 :(得分:5)

由于UTC时间戳从1970年1月1日午夜 UTC开始,只需执行以下操作:

timestamp - timestamp % (3600*24)

这将为您提供上午午夜UTC的时间戳。

要调整您的时区,只需在计算模数之前添加或删除相应的小时数,然后添加或删除它们以获取相应的UTC时间戳。