Java 如何获取当前时间的毫秒部分而不是 1970 年的时间

Java How to get millisecond part of current time and not from 1970

我正在使用 System.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 函数来计算,我不想使用其他函数或外部库。

使用currentTimeInMilliSec % 1000.

您也可以这样想:它的工作原理与 int m = totalMinutes % 60 相同,您已经发现它有效。

但更详细的解释如下:N % M给你一个从0M - 1的数字。因此,您将始终获得从 0999 的毫秒数。每次你的 currentTimeInMilliSec 前进一,这个数字也会前进一,但如果这个数字超过 999,它就会转向 0,这正是你想要的行为.

这个问题是关于算术而不是编程的,但是在这里:

给定一个特定时间t,从t到当前时间的毫秒数是:

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

现在您所要做的就是确定一个度量单位,并将上述所有抽象表示的时间转换为该单位并进行计算。

示例:

如果tmidnight, January 1, 1960 UTC,那么

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

t到现在的毫秒数是

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