Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不创建新日期的情况下用Java获取系统时间_Java_Date_Memory Management - Fatal编程技术网

如何在不创建新日期的情况下用Java获取系统时间

如何在不创建新日期的情况下用Java获取系统时间,java,date,memory-management,Java,Date,Memory Management,我需要获取系统日期,Java提供了newdate().getTime() 但我需要避免新的对象分配(我在嵌入式系统上工作)。如何在不分配新的日期对象的情况下获取系统时间?这应该可以: System.currentTimeMillis(); 你可以用 至少在OpenJDK中,它是在幕后使用的 调用是对本机JVM方法的调用,因此我们不能确定在封面下没有发生分配,尽管在这里看起来不太可能。使用System.currentTimeMillis()或System.nanoTime()正如jzd所说,您可

我需要获取系统日期,Java提供了
newdate().getTime()

但我需要避免新的对象分配(我在嵌入式系统上工作)。如何在不分配新的
日期
对象的情况下获取系统时间?

这应该可以:

System.currentTimeMillis();
你可以用

至少在OpenJDK中,它是在幕后使用的


调用是对本机JVM方法的调用,因此我们不能确定在封面下没有发生分配,尽管在这里看起来不太可能。

使用System.currentTimeMillis()System.nanoTime()

正如jzd所说,您可以使用
System.currentTimeMillis
。如果在
Date
对象中需要它,但不想创建新的
Date
对象,可以使用
Date.setTime
重用现有的
Date
对象。就我个人而言,我讨厌
Date
是可变的,但在这种特殊情况下,它可能对您有用。类似地,
Calendar
有一个
setTimeInMillis
方法


但是,如果可能的话,最好将其保持为
长的
。如果您只需要一个时间戳,那么这将是最好的方法。

来自nanoTime()的文档:此方法只能用于测量经过的时间,与任何其他系统或挂钟时间概念无关。返回的值表示从某个固定但任意的时间开始的纳秒(可能在将来,因此值可能是负数)。该方法提供纳秒精度,但不一定是纳秒精度。无法保证值的更改频率。由于数字溢出,连续调用的时间跨度大于大约292年(263纳秒)的差异将无法准确计算经过的时间。我相信@AaronF意味着2^63纳秒。:-)