我知道有很多关于如何在java中获取当前时间的帖子。但我计划在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;
}}
如果您知道某些库已经实现而没有浪费这种堆大小。请告诉我。
感谢。
答案 0 :(得分:8)
无需创建Calendar
,您可以从静态方法获取long
System.currentTimeMillis();
答案 1 :(得分:6)
您还可以创建一次Calendar实例并继续调用:
calendar.setTimeInMillis ( System.currentTimeMillis() );
在日历实例中设置当前时间,并使用该日历对象进行任何日期计算。
答案 2 :(得分:0)
通过优化方式获得时间戳,需要哪些额外的处理/开销才能使获得的时间戳有意义?
http://joda-time.sourceforge.net
如果您希望图书馆使用日期和时间,请使用Joda Time。我不打算做任何工作。
DateTime dt = new DateTime(); // current time
我建议如果性能是一个关键问题/限制问题,那么运行测试以确保您接受的任何解决方案都能实现超出代码可读性的非功能性结果。