15

似乎新的java.timeAPI 提供了一切java.util.Date,甚至更多。自 Java 8 以来有更新的 API 时,
是否有任何理由使用?应该并且完全避免?java.util.Datejava.timejava.util.Datejava.util.Calendar

4

1 回答 1

19

简短的回答:新的 APIjava.time比使用java.util.Dateand的旧世界要好得多java.util.Calendar。所以是的,新的代码应该首选新的 API。

快速概览:一旦我以表格形式为各种日期时间库编写了功能比较。在旧世界中几乎没有java.time缺少但存在的功能:

  • 可配置的 gregorian/julian 转换
  • 基于类的打印FieldPosition(用于 Swing-component FormattedTextField

关于弃用:尽管自 Java 1.1 以来大部分部分java.util.Date已弃用,但该类本身(以及java.util.Calendar,也是)并未正式弃用,只是被声明为事实上的遗留物。旧类的支持对于与遗留代码向后兼容的目标仍然很重要。所以甲骨文可能在未来的任何时候都不会停止支持。但也许甲骨文会采用更复杂的弃用策略

未来发展:有趣的是,Java-8的发布不仅包含了一个全新的java.time日期java.util.Calendar/时间API 但这似乎也预示着甲骨文并不愿意在近期停止对旧 API 的支持。

于 2018-02-08T15:57:23.933 回答