2

我只是想知道 Joda 的 LocalDate 类和 java.util 的 Date 类之间的区别是什么。另外,使用其中一个有什么优势吗?

4

2 回答 2

8

我认为Joda Time 网站很好地解释了这一切。

创建 Joda-Time 是为了从根本上改变 Java 中的日期和时间处理。JDK 类 Date 和 Calendar 设计得很糟糕,有很多错误并且有奇怪的性能影响。以下是我们开发和使用 Joda-Time 的一些原因:

  • 易于使用。由于缺乏简单的方法,日历使访问“正常”日期变得困难。Joda-Time 具有简单的字段访问器,例如 getYear() 或 getDayOfWeek()。
  • 易于扩展。JDK 通过 Calendar 的子类支持多个日历系统。这很笨重,实际上很难编写另一个日历系统。Joda-Time 通过基于 Chronology 类的可插拔系统支持多个日历系统。
  • 全面的功能集。该库旨在提供日期时间计算所需的所有功能。它已经提供了开箱即用的功能,例如对古怪日期格式的支持,这些功能很难用 JDK 复制。
  • 最新的时区计算。时区实现基于公共 tz 数据库,该数据库每年更新数次。新的 Joda-Time 版本包含对此数据库所做的所有更改。如果更早需要更改,手动更新区域数据很容易。
  • 日历支持。该库目前提供 8 个日历系统。将来会添加更多。
  • 易于互操作。该库在内部使用与 JDK 相同且类似于其他常见时间表示的毫秒瞬间。这使得互操作性变得容易,并且 Joda-Time 具有开箱即用的 JDK 互操作性。
  • 更好的性能特点。日历具有奇怪的性能特征,因为它会在意想不到的时刻重新计算字段。Joda-Time 只对正在访问的字段进行最少的计算。
  • 良好的测试覆盖率。Joda-Time 有一套全面的开发人员测试,为库的质量提供保证。
  • 完整的文档。有一个完整的用户指南,它提供了一个概述并涵盖了常见的使用场景。javadoc 非常详细,涵盖了 API 的其余部分。
  • 成熟度。该库自 2002 年以来一直在积极开发中。尽管随着新功能和错误修复的添加而不断改进,但它是一个成熟且可靠的代码库。现在有许多相关的项目可用。
  • 开源。Joda-Time 在商业友好的 Apache 许可证版本 2.0 下获得许可。

于 2012-07-18T18:23:40.223 回答
0

帮助我决定使用 JodaTime 的具体事情之一是日期验证。这对于标准的 java.util.Date 来说是非常困难的。

DateTime expireDate = new DateTime( year, month, 1, 0, 0 );

if ( expireDate.isBeforeNow() ) {
    // Expired handling here
}
于 2012-07-18T18:38:04.657 回答