首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用Java date和Time类,还是应该使用像Joda time这样的第三方库?

我应该使用Java date和Time类,还是应该使用像Joda time这样的第三方库?
EN

Stack Overflow用户
提问于 2009-02-26 09:51:54
回答 5查看 29.7K关注 0票数 147

我正在创建一个基于网络的系统,将在世界各国使用。必须存储的一种数据类型是日期和时间。

Joda time等第三方库相比,使用Java date和time类的优缺点是什么?我猜这些第三方库的存在有一个很好的理由,但我自己从来没有真正比较过它们。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-26 10:16:57

编辑:现在Java8已经发布了,如果你可以使用它,那就去做吧!在我看来,java.time甚至比Joda Time更干净。但是,如果您遇到了Java-8之前的问题,请继续阅读...

麦克斯询问使用Joda的利弊...

优点:

  • 它工作得很好。我强烈怀疑Joda中的bug比标准Java库要少得多。
  • 它的设计旨在鼓励你以正确的方式思考日期/时间处理--将“本地时间”(例如,“无论我在哪里,早上7点叫醒我”)和时间的瞬间(“我在太平洋标准时间下午3点给詹姆斯打电话;
  • 我相信它使更新时区数据库变得更容易,时区数据库确实变化得相对频繁
  • 它有一个很好的不变性故事,这使得生活变得容易得多。
  • 从不变性开始,所有的格式化程序都是线程安全的,这很棒,因为你几乎总是想通过application
  • You'll重用单个格式化程序在Java8中学习java.time是领先的,因为它们至少在某种程度上类似

缺点:

  • 这是另一个需要学习的

(尽管文档非常好)

  • 这是另一个构建和部署
  • 的库当你使用Java8时,仍然有一些工作要移植你的技能
  • 我在过去未能有效地使用DateTimeZoneBuilder。不过,这是一个非常罕见的用例。

为了回应oxbow_lakes关于有效构建你自己的小应用程序接口的想法,下面是我对为什么这是一个坏主意的看法:

  • 这是工作。为什么要在已经为你完成的情况下工作呢?
  • 团队的新手更有可能熟悉Joda而不是你自己开发的API
  • 你很可能在最简单的用法之外的任何事情上都搞错了……即使你最初认为你只需要简单的功能,这些东西也会变得越来越复杂,一次只需要一点点。日期和时间操作很难正确处理。此外,内置的Java很难正确使用-只需查看日历API的日期/时间算法的工作规则即可。在这些基础上构建任何东西都不是一个好主意,而不是一开始就使用一个设计良好的库。
票数 197
EN

Stack Overflow用户

发布于 2009-02-26 09:54:58

好吧,除非你打算等待Java8,希望他们能实现a better API来操纵日期和时间,是的,请使用Joda-Time。这既节省了时间,又避免了很多麻烦。

票数 24
EN

Stack Overflow用户

发布于 2009-02-26 10:03:48

答案是:视情况而定

JODA (和JSR-310)是一个全功能的日期/时间库,包括支持与多个日历系统一起使用。

就我个人而言,我发现JODA在复杂性方面比我所需要的要复杂得多。标准java DateCalendar类中的两个主要错误是:

它们是可变的,它们混淆了Instant-In-Time中的-

  1. -

-

  1. 的概念

尽管JODA已经解决了这些问题,但是您会发现为YearMonthDayInstant编写自己的类非常容易,这两个类都使用java类进行实际的“日历”计算。这样你就不必熟悉超过100个类的API、不同的格式化/解析机制等。

当然,如果您确实需要不同年表的完整表示(例如,希伯来语),或者希望能够定义自己的虚构日历系统(例如,对于您正在编写的游戏),那么JODA或JRS-310可能就是为您准备的。如果没有,那么我会建议你自己滚动可能是一条可行的道路。

JSR-310规范的领导者是Stephen Colebourne,他在第一位编写了JODA,因此在逻辑上将取代JODA。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/589870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档