我正在创建一个基于Web的系统,该系统将在世界各地的国家中使用。日期和时间是一种必须存储的数据。
与第3方库(如Joda time)相比,使用Java日期和时间类的优缺点是什么?我猜这些第三方库的存在是有充分理由的,但是我自己从未真正比较过它们。
我正在创建一个基于Web的系统,该系统将在世界各地的国家中使用。日期和时间是一种必须存储的数据。
与第3方库(如Joda time)相比,使用Java日期和时间类的优缺点是什么?我猜这些第三方库的存在是有充分理由的,但是我自己从未真正比较过它们。
Answers:
编辑:现在已经发布了Java 8,如果可以使用它,那就这样做吧!java.time
在我看来,它甚至比Joda Time还干净。但是,如果您在Java-8之前仍受困,请继续阅读...
Max询问使用Joda的利弊...
优点:
java.time
Java 8,因为它们至少有些相似缺点:
DateTimeZoneBuilder
有效使用。但是,这是一个非常罕见的用例。为了回应oxbow_lakes有效构建自己的小型API的想法,以下是我对这是一个坏主意的看法:
答案是:这取决于
JODA(和JSR-310)是功能齐全的日期/时间库,包括对与多个日历系统一起使用的支持。
就我个人而言,我发现JODA相对于我所需要的复杂性而言是一个太大的进步。标准java Date
和Calendar
类中的2个主要(IMHO)错误是:
尽管JODA解决了这些问题,但您会发现轻松地为YearMonthDay
和滚动自己的类Instant
,它们都使用Java类进行实际的“日历”计算。然后,您不必熟悉> 100个类的API,不同的格式/解析机制等。
当然,如果您确实需要完整地表示不同的时间顺序(例如希伯来语),或者希望能够定义自己的假想日历系统(例如您正在编写的游戏),那么JODA或JRS-310可能适合您。如果没有,那么我建议自己动手做是可行的方法。
JSR-310规范的负责人是斯蒂芬·科尔本(Stephen Colebourne),他是第一位撰写JODA的人,因此在逻辑上将取代 JODA。
您应该使用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/