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 ответа:
Используйте
Вы также можете думать об этом так: это работает по той же причине, что и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]
.