使用长时间戳或Joda时间

时间:2010-11-09 03:01:37

标签: java jodatime

我有一个遗留Java应用程序,其性能瓶颈是由于Calendar的使用。由于Calendar是一个可变对象,我们必须在每次获取它时进行克隆。

public Calendar getCalendar() {
    return (Calendar)calendar.clone();
}

我们还发现,在我们的应用程序中,我们根本没有使用时区信息。我想知道,我们应该将代码重新计算到

public long getTimestamp() {
    return timestamp;
}

当我们需要执行日期/时间算术运算时,我们只会将时间戳转换为Calendar或Joda DateTime。

或者为了防止无法预料的未来,我们应该使用Joda DateTime吗?

public DateTime getDateTime() {
    return dateTime;
}

2 个答案:

答案 0 :(得分:4)

通常情况下,如果您不关心时区并且必须存储大量时间戳,则最好将它们存储为long-s。每个时间戳为8个字节。围绕'long'的所有面向对象的日期时间包装器每个时间戳将消耗至少24个字节。当您需要执行任何日期时间算法时 - 将您的长时间戳转换为Joda DateTime(或MutableDateTime)。它们都是作为“长”字段的包装器实现的,因此从长时间创建它们非常便宜。

答案 1 :(得分:0)

你绝对应该使用JodaTime。确保在java.util.Date中传递日期,这是UTC自1970年1月1日以来的很长一毫秒。