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