В настоящее время я использую TimeUnit.MILLISECONDS.toSeconds(valueInMillis), чтобы проверить, приходят ли два миллисекундных значения с одной и той же секунды. Можете ли вы порекомендовать более быстрый алгоритм для этой операции?
TimeUnit.MILLISECONDS.toSeconds(valueInMillis)
Спасибо.
Разделите каждое на 1000. Поскольку они являются целыми / длинными, десятичная дробь будет усечена. Если они находятся в одинаковых секундах, значения будут одинаковыми.
Это код, стоящий за TimeUnit.MILLISECONDS.toSecond(long d):
TimeUnit.MILLISECONDS.toSecond(long d)
public long toSeconds(long d) { return d/(C3/C2); }
, где C2, C3 - статические константы. Вы можете сохранить одно деление ... В этом случае я предпочел ваш реальный код, это легче понять
C2
C3
Предполагая, что t1 и t2 являются временными метками. Например, из System.currentTimeMillis ()
public static boolean isSameSecond(long t1, long t2){ return (t1/1000) == (t2/1000) }