1.为什么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) 取代。
2.获取当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//准备格式化对象
Calendar now=Calendar.getInstance();//创建一个日历实例
System.out.println(now.getTime());//打印标准时间格式:Wed May 15 13:02:35 CST 2024
System.out.println("当前日"+now.get(Calendar.DATE));//当前日15
System.out.println("当前月"+(now.get(Calendar.MONTH)+1));//当前月5
System.out.println("指定格式化时间"+sdf.format(now.getTime()));//把标准时间格式为指定格式时间
Date formatNowDate = sdf.parse(sdf.format(now.getTime()));//把指定格式的时间转为标准时间,注意parse的返回值是Date类型
Date date = new Date();
System.out.println(date);//和now.getTime一样,打印标准时间格式:Wed May 15 13:02:35 CST 2024
// 注意:一般我们往数据库中保存,可以保存Date类型(Calendar可以parse成date),但是不能保存字符串