为什么大多数java.util.Date方法都已弃用?

Dan*_*lan 45 java datetime date deprecated

当您查看java.util.Date类的javadoc时,不推荐使用大多数方法.为什么这样做?

Yis*_*hai 44

好吧,有两个相关的原因.这是日期和时代概念的一个非常差的实现,它被Calendar类取代.

Calendar类,虽然有所改善,留下了很多有待改进为好,这样严重的日期/时间的工作,每个人都建议乔达时间.Java 8带来了新的java.time.*包,其灵感来自JSR-310定义的Joda-Time,旨在取代旧的Date/Calendar类.

编辑:针对实施效果差的具体问题,有很多原因.JavaDoc总结如下:

不幸的是,这些功能的API不适合国际化.

除了这个一般性的缺陷(其中包括缺少时区组件以及更好处理的日期格式DateFormat以及无法使用非公历表示的问题),还有一些特定的问题确实会对Date课程,包括年份与共同时代相比1900年的偏差.

Calendar有自己的问题,但即使早在JDK 1.1,显然java.util.Date不会削减它.虽然Calendar可以说是最糟糕的JDK API,但它一直试用到版本7.

  • 在jdk 1.1中干净利落地从不充分到不可理解的转变:) (9认同)

Boz*_*zho 16

  • Date 是可变的
  • Date 没有时区支持

后者导致它被替换为Calendar.前者与易用性相结合,导致Joda-Time/JSR-310(java.time.*包)取代

  • 感谢IBM的Calendar,DateFormatter以及所有其他相关的废话.另一个过度工程的杰出例子,没有真正解决手头的问题. (8认同)

Wil*_*ung 10

他们被弃用了,因为在他们想把JDK赶出门的那天,Date尽可能快地写完了.

事实证明日期和日历很难.因此,为了处理使用日历的难点,他们创建了更多的Calendar类.

他们弃用Date方法并委托给Calendar,因为他们不想更改现有Date方法的行为,并且可能破坏现有应用程序.