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

2022-09-01 00:32:39

当您查看 java.util.Date 类的 javadoc 时,大多数方法都已弃用。为什么要这样做?


答案 1

好吧,出于两个相关原因。这是对日期和时间概念的非常糟糕的实现,它被类所取代。Calendar

该课程虽然有所改进,但也有很多不足之处,因此对于严肃的日期/时间工作,每个人都推荐Joda-TimeJava 8 带来了新的 java.time.* 包,灵感来自 JSR-310 定义的 Joda-Time,旨在取代旧的 Date/Calendar 类。Calendar

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

不幸的是,这些函数的API不适合国际化。

除了这种普遍的缺陷(包括缺乏时区组件以及更好地处理的日期格式以及无法具有非公历表示形式等问题)之外,还有一些具体问题确实伤害了该类,包括年份与共同时代年份的1900年相抵消的事实。DateFormatDate

Calendar有自己的问题,但早在JDK 1.1,很明显不会削减它。尽管可以说是最糟糕的JDK API,但直到版本7才试图解决这个问题。java.util.DateCalendar


答案 2
  • Date是可变的
  • Date不支持时区

后者导致它被取代。前者,结合易用性,导致两者都被Joda-Time / JSR-310java.time.*包)所取代。Calendar)