Java как получить миллисекундную часть текущего времени а не с 1970 года


Я использую систему.currentTimeMillis () чтобы получить количество миллисекунд с 1970 года, я могу получить текущий час, минуту и секунды, используя следующее:

Long currTimeInMilliSec =   System.currentTimeMillis()
int h = (((currTimeInMilliSec / 1000) / 3600 ) % 24)
int m = (((currTimeInMilliSec / 1000) / 60) % 60)
int s = ((currTimeInMilliSec / 1000) % 60)

Как я могу вычислить миллисекунду текущего времени (не с 1970 года), потому что если я использую int ms = currentTimeInMilliSec, это будет число миллисекунд с 1970 года.

Примечание: по какой-то причине мне нужно использовать только функцию currentTimeMillis для вычисления, и я не хочу использовать другие функции или внешние библиотеки.

2 2

2 ответа:

Используйте currentTimeInMilliSec % 1000.

Вы также можете думать об этом так: это работает по той же причине, что и int m = totalMinutes % 60, и вы уже обнаружили, что это работает. Но более подробное объяснение заключается в следующем: N % M дает вам число от 0 до M - 1. Таким образом, вы всегда получите число миллисекунд от 0 до 999. И каждый раз, когда ваш currentTimeInMilliSec продвигается на единицу, это число также продвигается на единицу, но если это число когда-либо превышает 999, оно искривляется до 0, что является точным поведение, которое вы хотите.

Этот вопрос касается арифметики, а не программирования, но здесь:

Задано определенное время t, число МС от t до текущего времени равно:

System.currentTimeMillis() + ([midnight, January 1, 1970 UTC] - t).

Теперь все, что вам нужно сделать, это выбрать единицу измерения и преобразовать все абстрактно представленные времена в нее и выполнить расчет.

Пример :

Если t равно midnight, January 1, 1960 UTC, то

[midnight, January 1, 1970 UTC] - t = [number of ms in 10 years]

И число МС от t до настоящего времени is

System.currentTimeMillis() + [number of ms in 10 years].