我想将结果转换System.nanoTime()
为日期.
public void tempBan(Player p, Player banner, int timeInSeconds){
Long timeInNano = (long) (timeInSeconds * 10^9);
int newTime = (int) (System.nanoTime() + timeInNano);
// here I want to convert newTime to a date
}
Run Code Online (Sandbox Code Playgroud)
我已经通过乘以10 ^ 9将秒转换为纳秒.现在我需要将当前系统时间加上我转换为纳秒的参数转换为日期.
Cel*_*ggs 12
不幸的是,System.nanoTime()
这不是你想要的.
引用JavaDoc:
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关.返回的值表示纳秒,因为某些固定但任意的原始时间(可能在将来,因此值可能为负).在Java虚拟机的实例中,此方法的所有调用都使用相同的原点; 其他虚拟机实例可能使用不同的来源.
您可能想要System.currentTimeMillis()
,在这种情况下,您可以使用new Date(System.currentTimeMillis() + milliseconds)
该日期获取该毫秒数的日期.
然后您可以减去System.nanoTime()
,缩放值,并添加System.currentTimeMillis()
以获得类似的结果...因为您System.nanoTime()
无论如何都要添加,因此具有原始秒数,您可以直接使用System.currentTimeMillis()
.