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

时间:2015-12-06 13:21:23

标签: java time milliseconds

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

2 个答案:

答案 0 :(得分:2)

使用currentTimeInMilliSec % 1000

您也可以这样思考:它的工作原理与int m = totalMinutes % 60的工作原理相同,并且您已经发现它可以正常工作。

但更详细的解释如下:N % M为您提供了从0M - 1的数字。因此,从0999,您将始终获得数毫秒的时间。每当您的currentTimeInMilliSec前进一个时,此数字也会前进一个,但如果此数字超过999,它会翘曲到0,这就是您想要的确切行为

答案 1 :(得分:0)

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

根据特定时间t,从t到当前时间的ms数为:

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到现在的ms数

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