我认为Joda Time Website很好地解释了这一切。
Joda-Time已经创建,可以从根本上改变Java中的日期和时间处理。
JDK类日期和日历设计非常糟糕,有很多错误
并且有奇怪的表现效果。
以下是开发和使用Joda-Time的一些原因:
- 易于使用。
由于缺乏简单的方法,日历使得访问“正常”日期变得困难。
Joda-Time有简单的现场访问器,如
getYear()或getDayOfWeek()。
- 易于扩展。
JDK通过Calendar的子类支持多个日历系统。
这很笨重,实际上编写另一个日历系统非常困难。
Joda-Time通过基于的可插拔系统支持多个日历系统
年表课。
- 综合功能集。
该库旨在提供日期时间所需的所有功能
计算。它已经提供了开箱即用的功能,例如支持oddball
日期格式,很难用JDK复制。
- 最新的时区计算。
时区实施基于
公共tz数据库,这是
每年更新几次。新的Joda-Time版本包含所有更改
对这个数据库做了。如果需要更改,
手动更新区域数据非常简单。
- 日历支持。
该库目前提供8个日历系统。将来会添加更多内容。
- 易于互操作性。
该库内部使用的毫秒瞬间与JDK相似
到其他常见的时间表示。这使得互操作性变得容易,Joda-Time也来了
具有开箱即用的JDK互操作性。
- 更好的表现特征。
日历具有奇怪的性能特征,因为它会在意外时刻重新计算字段。
Joda-Time仅对正在访问的字段进行最小化计算。
- 良好的测试覆盖率。
Joda-Time拥有一套全面的开发人员测试,可以保证图书馆的质量。
- 完整文档。
有一个完整的用户指南,提供概述和封面
常见的使用场景。 javadoc
非常详细,涵盖了API的其余部分。
- 成熟的。
图书馆自2002年以来一直在积极发展。
虽然它随着新功能的增加而不断改进
错误修复,它是一个成熟和可靠的代码库。
现在有许多相关项目可供使用。
- 开源。
Joda-Time根据业务友好的Apache License Version 2.0获得许可。
帮助我决定使用JodaTime的具体事项之一是日期验证。使用标准java.util.Date非常困难。
DateTime expireDate = new DateTime( year, month, 1, 0, 0 );
if ( expireDate.isBeforeNow() ) {
// Expired handling here
}