【Java】为什么Java中Date类的很多方法被废弃了

Date类的很多方法被废弃,归根结底是有缺陷、有问题,已经被新的、更完善的类、方法替代了。

Date类中有很多方法都标有删除线,是因为Date类在设计中有很多问题,如getYear指的是1900年以来的年数,getMonth是从0开始的。事实上,不止Date类,Java的日期时间相关类都存在设计问题。Java的日期类库有些混乱,据说已经重新设计了两次。

Date类已经逐渐被Calendar类所取代。

  • int getDate() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
  • int getDay() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
  • int getHours() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
  • int getMinutes() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
  • int getMonth() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。
  • int getSeconds() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。
1
2
3
4
5
6
7
8
9
10
11
public class Time {

public static void main(String[] args) {

Date date = new Date();
System.out.println(date.getMonth());

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.MONTH));
}
}