Java基础之Calendar日历类
2022-10-25
Java基础之Calendar日历类
Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分和秒等。
定义方法
Calendar类是一个抽象类,不可以被实例化。
因此,需要使用静态方法getInstance()
来得到一个Calendar对象
Calendar calendar = Calendar.getInstance(); // 获取当前日期
获取方法
方法1
可获取字段包括:年、月、日、时、分、秒,需要使用Calendar类中定义的常量值来表示,如Calendar.YEAR
用于表示年份。
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE); // DATE表示日
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
/****执行结果******/
2022年10月25日7时4分37秒
需要特别注意:
在使用Calendar.MONTH字段时,月份的起始值是从0开始的,而不是从1开始,因此要获取当前的月份需要在Calendar.MONTH的基础上加1。
方法2
使用Calendar的getTime()
方法,getTime()方法会返回一个表示Calendar时间值的Date对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
/******执行结果*******/
Tue Oct 25 07:10:22 CST 2022
设置方法
使用set
字段进行设置,有以下三种格式:
方法声明 | 功能描述 |
---|---|
void set(int field,int value) | 为指定日历字段设置指定值 |
void set(int year,int month,int date) | 设置Calendar对象的年、月、日三个字段的值 |
void set(int year.int month,int date,int hourOfDay,int minute,int second) | 设置Calendar对象的年、月、日、时、分、秒六个字段的值 |
格式1:
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期:");
System.out.println(calendar.getTime());
// 指定日历字段进行设置
calendar.set(Calendar.MONTH, 10); // 注意:实际上设置为10+1=11月
calendar.set(Calendar.DATE, 10);
System.out.println("设置方式1:");
System.out.println(calendar.getTime());
/******执行结果*******/
当前日期:
Tue Oct 25 07:19:46 CST 2022
设置方式1:
Thu Nov 10 07:19:46 CST 2022
格式2:
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期:");
System.out.println(calendar.getTime());
// 指定日历字段进行设置
calendar.set(2020,8,19); // 设置为2020年9月19日
System.out.println("设置方式2:");
System.out.println(calendar.getTime());
/******执行结果*******/
当前日期:
Tue Oct 25 07:28:16 CST 2022
设置方式2:
Sat Sep 19 07:28:16 CST 2020
格式3:
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期:");
System.out.println(calendar.getTime());
// 指定日历字段进行设置
calendar.set(2020,8,19,20,19,18); // 设置年、月、日、时、分、秒
System.out.println("设置方式3:");
System.out.println(calendar.getTime());
/******执行结果*******/
当前日期:
Tue Oct 25 07:29:58 CST 2022
设置方式3:
Sat Sep 19 20:19:18 CST 2020
增减日期方法
使用方法void add(int field,int amount)
,amount为正数表示增加,为负数表示减少。
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期:");
System.out.println(calendar.getTime());
calendar.add(Calendar.DATE,1); // 日+1
calendar.add(Calendar.YEAR,-2); // 年-2
System.out.println("日期增减后:");
System.out.println(calendar.getTime());
/******执行结果*******/
当前日期:
Tue Oct 25 07:33:35 CST 2022
日期增减后:
Mon Oct 26 07:33:35 CST 2020
格式化输出日期方法
采用SimpleDateFormat
类:
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat(
"一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
Calendar calendar = Calendar.getInstance();
System.out.println(myFmt.format(calendar.getTime()));
System.out.println(myFmt1.format(calendar.getTime()));
System.out.println(myFmt2.format(calendar.getTime()));
System.out.println(myFmt3.format(calendar.getTime()));
System.out.println(myFmt4.format(calendar.getTime()));
/******执行结果*******/
2022年10月25日 07时42分34秒
22/10/25 07:42
2022-10-25 07:42:34
2022年10月25日 07时42分34秒 周二
一年中的第 298 天 一年中第44个星期 一月中第5个星期 在一天中7时 CST时区
参考链接
https://book.itheima.net/course/1265899443273850881/1265900797362954241/1265906995478913025
https://blog.csdn.net/weixin_45732073/article/details/111501550