我正在创建一个基于网络的系统,将在世界各国使用。必须存储的一种数据类型是日期和时间。
与第三方库(如 乔达时间)相比,使用 Java 日期和时间类有哪些优点和缺点?我想这些第三方库的存在是有原因的,但我自己从来没有真正比较过它们。
那么,除非您打算等待 Java8,希望它们将实现 更好的空气污染指数来操作日期和时间,否则,请使用 Joda 时间。这样既节省时间又避免了许多麻烦。
答案是: 看情况了
JODA (和 JSR-310)是一个功能齐全的日期/时间库,包括对多日历系统的支持。
就我个人而言,我发现 JODA 对于我所需要的复杂性来说是一个太远的步骤。标准 java Date和 Calendar类中的两个主要错误是:
Date
Calendar
尽管 JODA 解决了这些问题,但您会发现很容易为 YearMonthDay和 Instant滚动自己的类,它们都使用 Java 类进行实际的“日历”计算。这样你就不必熟悉一个大于100个类的 API,一个不同的格式化/解析机制等等。
YearMonthDay
Instant
当然,如果你确实需要不同时间表的完整表示(比如希伯来语) ,或者希望能够定义自己想象中的日历系统(比如你正在写的游戏) ,那么 JODA 或 JRS-310可能适合你。如果答案是否定的,那么我建议你可以自己动手。
JSR-310规范的领导者是 Stephen Colebourne,他在第一位编写了 JODA,因此逻辑上 更换 JODA 也是如此。
编辑: 既然 Java8已经发布了,如果你可以使用它,那就这样做吧!在我看来,java.time甚至比 Joda Time 还要干净。但是,如果您在 Java-8之前就遇到了困难,请继续阅读..。
java.time
Max 问了利用 Joda 的利弊。
优点:
缺点:
DateTimeZoneBuilder
为了回应 oxbow _ lake 关于有效构建自己的小 API 的想法,以下是我对为什么这是一个坏主意的看法:
这完全取决于你如何处理这些日期。如果您只是持久化它们,那么 Java 内置的 Dates 可能会满足您的所有要求。然而,如果您正在进行大量的时间日期操作,那么使用 Joda 可能会更好。
您应该使用 Joda-Time 库,因为:
有关详情,请参阅此网页: Http://swcodes.blogspot.com/