我使用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函数来计算,我不想使用其他函数或外部库。
答案 0 :(得分:2)
使用currentTimeInMilliSec % 1000
。
您也可以这样思考:它的工作原理与int m = totalMinutes % 60
的工作原理相同,并且您已经发现它可以正常工作。
但更详细的解释如下:N % M
为您提供了从0
到M - 1
的数字。因此,从0
到999
,您将始终获得数毫秒的时间。每当您的currentTimeInMilliSec
前进一个时,此数字也会前进一个,但如果此数字超过999
,它会翘曲到0
,这就是您想要的确切行为
答案 1 :(得分:0)
这个问题是关于算术而不是编程,但是在这里:
根据特定时间t
,从t
到当前时间的ms数为:
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
到现在的ms数
System.currentTimeMillis() + [number of ms in 10 years]
。