ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # Calender 1. java.util.Calender类主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化,通过案例来看为Date 被取代 ~~~ import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) { // 指定年月日生成时间 -- 此方法以过时 Date d1 = new Date(2022, 8, 8, 8, 8); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = sdf.format(d1); System.out.println(format); // 3922-09-08 08:08:00 // 想打印真正的 2022-08-08 08:08:00 需要年减低掉1900 月剪掉1 d1 = new Date(2022 - 1900, 8 - 1, 8, 8, 8); format = sdf.format(d1); System.out.println(format); // 2022-08-08 08:08:00 } } ~~~ 2. 该类是个**抽象类**,因此不能**实例化对象**,其具体子类针对不同国家的日历系统 >[info] ## 常用的方法 |方法声明 |功能介绍| | -- | -- | |static Calendar getInstance()| 用于获取Calendar类型的引用| |void set(int year, int month, int date, int hourOfDay, int minute, int second) |用于设置年月日时分秒信息| |Date getTime()|用于将Calendar类型转换为Date类型| |void set(int field, int value)| 设置指定字段的数值| |void add(int field, int amount) |向指定字段增加数值| ~~~ import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTest { public static void main(String[] args) { // 抽象类不能直接new 创建对象 Calendar instance = Calendar.getInstance(); // 指定年月日是分秒 instance.set(2022, 8 - 1, 8, 8, 8, 8); // 将Calendar 转换为 Date 格式 Date date = instance.getTime(); // 打印 SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = sft.format(date); System.out.println(format); // 2022-08-08 08:08:08 // ----------------------------------------------- // 想设置当前对象指定 年月日时分秒 通过set 方法 instance.set(Calendar.YEAR, 2023); // 将Calendar 转换为 Date 格式 date = instance.getTime(); // 打印 format = sft.format(date); System.out.println(format); // 2023-08-08 08:08:08 // ----------------------------------------- // 设置年月日时分秒的增加 instance.add(Calendar.MONTH, 5); // 将Calendar 转换为 Date 格式 date = instance.getTime(); // 打印 format = sft.format(date); System.out.println(format); // 2024-01-08 08:08:08 } } ~~~ >[danger] ##### 问答 1. 既然Calendar是个抽象类不能创建对象,那么下面的方法为啥可以获取Calendar类型的引用呢 ~~~ 由源码可知,返回的并不是Calendar类型的对象,而是Calendar类的子类GregorianCalendar等对象,形成了多态 Calender getInstance(){ return new GregorianCalendar(zone, aLocale); } ~~~