Java 什么';这是检查两个长值(以毫秒为单位)是否属于同一秒的最有效方法
目前,我正在使用Java 什么';这是检查两个长值(以毫秒为单位)是否属于同一秒的最有效方法,java,time,compare,Java,Time,Compare,目前,我正在使用TimeUnit.millises.toSeconds(valueInMillis)检查两个毫秒值是否来自同一秒。你能为这个操作推荐一个更快的算法吗 谢谢。将每个值除以1000。由于它们是整数/长整数,小数将被截断。如果它们在相同的秒数内,则值将相同。这是时间单位毫秒后的代码。到秒(长d): 其中,C2,C3为静态常数。您可以保存一个分区。。。在这种情况下,我更喜欢您的实际代码,假设t1和t2是时间戳,那么更容易理解。例如来自System.currentTimeMillis()的
TimeUnit.millises.toSeconds(valueInMillis)
检查两个毫秒值是否来自同一秒。你能为这个操作推荐一个更快的算法吗
谢谢。将每个值除以1000。由于它们是整数/长整数,小数将被截断。如果它们在相同的秒数内,则值将相同。这是
时间单位毫秒后的代码。到秒(长d)
:
其中,
C2
,C3
为静态常数。您可以保存一个分区。。。在这种情况下,我更喜欢您的实际代码,假设t1和t2是时间戳,那么更容易理解。例如来自System.currentTimeMillis()的
... 除非他也需要去掉其余的日期(从一年到一分钟),否则这个问题会留下解释的余地;)我需要检查它们是否来自同一年/月/日/小时/分钟/秒如果不关心年/月/日,则可以通过模数转换删除上限值,两个值之间的最大差值为几天。希望这能让问题更清楚请描述一下“从同一秒开始”是什么意思。你为什么认为,你有一个性能问题?所使用的代码只是一个简单的设备。@Thorbjørn:我可能会在短时间内收到数百个数据,我只想跟踪每秒最新的值@阿恩,我明白这是一个简单的划分,但我对如何节省一些处理时间的想法已经没有了,我认为这可能值得一试此外,此操作每秒将执行数百次,因此节省一点成本肯定会有所帮助。我相信,如果您描述“从同一秒开始”的含义,您就有了您的算法……如果C2和C3是常量,编译器将计算C3/C2的结果并使用它。甚至更好;)那就越快越好
public long toSeconds(long d) { return d/(C3/C2); }
public static boolean isSameSecond(long t1, long t2){
return (t1/1000) == (t2/1000)
}