我应该使用Java日期和时间课程,或者与第三方库(如Joda Time)一起去吗?

问题:

我正在创建一个基于网络的系统,将用于来自世界各地的国家。必须存储的一种数据类型是日期和时间。
与第Joda time类第三方库相比,使用Java日期和时间类的优点和缺点是什么?我猜这些第三方图书馆存在很好的理由,但我从来没有真正比较自己。

回答:

编辑:现在Java 8已经被发布了,如果可以使用,那就这样做!在我看来,java.time比起Joda时间更干净。但是,如果您在Java-8之前遇到问题,请阅读…
Max要求使用Joda的利弊…
优点:

  • 它工作得很好。我强烈怀疑Joda中的错误比标准Java库少得多。由于设计,Java库中的某些错误非常困难(如果不是不可能)修复。
  • 它旨在鼓励您以正确的方式思考日期/时间处理 – 分离“本地时间”的概念(例如“随时随地吸引我上午7点”)和即时(“我在打电话给詹姆斯在太平洋标准时间下午3点;他可能不是下午3点,但是同一时刻“)
  • 我相信它会更容易更新时区数据库,哪个does相对频繁地更改
  • 它有一个很好的不变性故事,这使得生活更容易IME。
  • 从不变性出发,所有格式化程序都是线程安全的,这是很好的,因为你几乎always想通过应用程序重新使用一个格式化程序
  • 您将在Java 8中学习java.time的开始,因为它们至少有些类似

缺点:

  • 这是另一个学习API(虽然文档很不错)
  • 这是建立反对和部署的另一个图书馆
  • 当您使用Java 8时,还有一些工作要迁移您的技能
  • 我以前没有有效地使用DateTimeZoneBuilder。这是very罕见的用例。

为了回应oxbow_lakes有效构建您自己的小型API的想法,以下是我为什么这是一个坏主意的观点:

  • 是工作。为什么工作已经为你完成了?
  • 您的团队的新手更有可能熟悉Joda而不是您自己生成的API
  • 除了最简单的用法之外,您可能会遇到任何错误,即使您最初think您只需要简单的功能,这些东西也有一个日益复杂的习惯,一次只能轻松一点。日期和时间操纵是hard正确执行。此外,内置的Java API很难正确地use,只需查看日历API日期/时间算术如何工作的规则。构建任何东西都是一个坏主意,而不是使用精心设计的库来开始。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Should I use Java date and time classes or go with a 3rd party library like Joda Time?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

45 + = 54