如何在不创建新Date的情况下在Java中获取系统时间

时间:2011-02-01 14:20:51

标签: java date memory-management

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

但我需要避免新的对象分配(我正在使用嵌入式系统)。如何在不分配新Date对象的情况下获取系统时间?

4 个答案:

答案 0 :(得分:58)

正如jzd所说,你可以使用System.currentTimeMillis。如果您需要 Date个对象但又不想创建 Date对象,则可以使用Date.setTime重用现有的Date对象。就个人而言,我讨厌Date是可变的这一事实,但也许在这种特殊情况下对你有用。同样,CalendarsetTimeInMillis方法。

如果可能的话,将它保持为long可能会更好。如果您只需要有效的时间戳,那么这将是最好的方法。

答案 1 :(得分:49)

这应该有效:

System.currentTimeMillis();

答案 2 :(得分:11)

您可以使用System.currentTimeMillis()

至少在OpenJDK中,Date使用了这个。

System中的调用是对本机JVM方法的调用,所以我们不能肯定地说没有在封面下发生分配,尽管这里似乎不太可能。

答案 3 :(得分:7)

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