我正在创建一个基于网络的系统,该系统将在世界各国使用。必须存储的一种数据是日期和时间。
与第三方库(如Joda time)相比,使用Java日期和时间类的优缺点是什么?我猜这些第三方图书馆存在的原因很充分,但我自己从未真正比较过它们。
答案 0 :(得分:196)
java.time
比Joda Time更清洁。但是,如果您在Java-8之前遇到困难,请继续阅读......
Max询问使用Joda的优缺点......
优点:
java.time
,因为它们至少有点相似缺点:
DateTimeZoneBuilder
。这是一个非常罕见的用例。为了回应oxbow_lakes关于有效构建自己的小API的想法,以下是我对为什么这是一个坏主意的看法:
答案 1 :(得分:24)
好吧,除非你打算等待Java 8,希望他们实现a better API来操纵日期和时间,是的,请使用Joda-Time。节省时间,避免许多麻烦。
答案 2 :(得分:15)
答案是:取决于
JODA(和JSR-310)是一个功能齐全的日期/时间库,包括支持多个日历系统。
我个人认为JODA在我需要的复杂性方面迈出了一大步。标准java Date
和Calendar
类中的2个主要(IMHO)错误是:
虽然这些都是由JODA解决的,但你会发现很容易为YearMonthDay
和Instant
推送自己的类,它们都使用底层的java类进行实际的“日历”计算。然后,您不必熟悉> 100个类的API,不同的格式化/解析机制等。
当然,如果您确实需要完整表示不同的年代表(例如希伯来语)或希望能够定义您自己的想象日历系统(例如,对于您正在编写的游戏),那么JODA或JRS-310可能适合您。如果没有,那么我建议自己滚动可能就是这样。
JSR-310规范的主角是Stephen Colebourne,他在第一名写了JODA,所以逻辑上替换 JODA。
答案 3 :(得分:7)
这完全取决于你对日期做了什么。如果您只是坚持它们,那么Java内置的日期可能会完成您想要的所有操作。但是如果你正在进行广泛的时间操作,那么你可能会更好地使用Joda。
答案 4 :(得分:7)
您应该使用Joda-Time库,因为:
Exception in thread "main"
org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31":
Value 31 for dayOfMonth must be in the range [1,28].
您可能会喜欢此页面了解更多详情: http://swcodes.blogspot.com/