我需要确定时间戳是否是精确的小时(即它表示没有分钟、秒或毫秒分量的时间) - 仅使用原语。该代码每秒调用数百次,我不想要一个Calendar
或其他对象的开销。
我已经尝试过了,但舍入错误会导致比较失败。
float hours = (time / 3600000f);
boolean isExactHour = hours == (int)hours;
例如,如果时间 = 1373763600470,则小时数 = 381601.03125。该时间戳表示今天格林威治标准时间 01:00:00:000,小时数应为 381601。
有什么想法可以快速简单地做到这一点吗?谢谢!
[编辑]
似乎这比乍一看更复杂(什么时候不是?:)
为了清楚起见,我不关心时区,也不关心闰秒。时间戳由返回前一个午夜的方法生成 - 即今天的 2013 年 7 月 13 日 00:00:00:000。然后,我正在计算一个 long 数组中的任何时间戳,它始终是这个初始时间戳加上/减去 5 分钟的精确倍数。我的目标是确定给定的邮票是否是“小时之内”。我可能会遇到边缘情况,即 5 分钟的倍数在年底重叠,但我可以忍受这些。