6

我知道有很多关于如何在 java 中获取当前时间的 os 帖子。但我打算在 Persona 类中编写一个 getAge 方法。问题是,每次调用方法时我都需要获取当前时间。假设有十亿个客户端执行 getMethod(有几毫秒,也许几秒的差异),就会为这样一个简单的事情创建十亿个对象。我唯一做的就是在 Person 中创建一个静态成员,因此 Person 将共享该实例。但这并不能阻止对象的创建。

public class Person{
//Some Attributes
private static Calendar now;
private Calendar birthDate;

public short getAge(){
now = Calendar.getInstance();

return  (short) (( now.getTimeInMillis() - birthDate.getTimeInMillis())/ 31536000000L;
}}

如果你知道一些库已经实现了这个而没有浪费这样的堆大小。请告诉我。

谢谢。

4

3 回答 3

9

无需创建 a Calendar,可以long从静态方法 中获取 a

System.currentTimeMillis();
于 2012-10-30T14:27:39.203 回答
6

您还可以创建一个 Calendar 实例并继续调用:

calendar.setTimeInMillis ( System.currentTimeMillis() );

在日历实例中设置当前时间并使用该日历对象进行任何日期计算。

于 2012-10-30T14:30:33.583 回答
0

通过优化方式获得的时间戳,需要哪些额外的处理/开销才能使获得的时间戳有意义?

http://joda-time.sourceforge.net

如果您希望图书馆可以处理日期和时间,请使用 Joda Time。我不会尝试任何解决方法。

DateTime dt = new DateTime();  // current time

我建议,如果性能是一个关键问题/限制问题,那么您运行测试以确保您接受的任何解决方法都能实现超过代码可读性的非功能性结果。

于 2012-10-30T14:30:41.867 回答