Java中Calendar类的使用

  • Calendar是一个抽象类,不能直接new一个实例,创建实例的方法如下:
 getInstance()//使用默认时区和区域设置获取日历。
 Calendar calendar = Calendar.getInstance();

获得实例默认是当前日期

  •  get(int field)        返回给定日历字段的值
 System.out.println(calendar.get(0));//ear  代表时代
 System.out.println(calendar.get(1));//year 年份
 System.out.println(calendar.get(2));//month 月份是从0开始算的,真实的月份需要+1
 System.out.println(calendar.get(3));//week of year 一年中第几个星期
 System.out.println(calendar.get(4));//week of month 一个月中的第几个星期
 System.out.println(calendar.get(5));//day of month 月中的第几天
 System.out.println(calendar.get(6));//day of year  年中的第几天
 System.out.println(calendar.get(7));//day of week  一周中第几天,从星期天开始算
 System.out.println(calendar.get(8));//day of week in month 
 System.out.println(calendar.get(9));//am_pm 0代表hour是中午之前 1代表中午之后
 System.out.println(calendar.get(10));//hour  十二小时制
 System.out.println(calendar.get(11));//hour of day  二十四小时制
 System.out.println(calendar.get(12));//minute 分
 System.out.println(calendar.get(13));//second 秒
 System.out.println(calendar.get(14));//millisecond 毫秒
 System.out.println(calendar.get(15));//zone offset 
 System.out.println(calendar.get(16));//dst offset  夏令时偏移量

常量值如下:

System.out.println(Calendar.AM_PM);//0表示在中午12点之前,1表示中午12点之后(包括12点)
System.out.println(Calendar.ERA);//表示纪元,0表示BC(公元前),1表示AD(公元)
System.out.println(Calendar.YEAR);//表示年份
System.out.println(Calendar.MONTH);//表示月份,0表示1月,1表示2月,以此类推
System.out.println(Calendar.WEEK_OF_YEAR);//本年中第几个星期
System.out.println(Calendar.WEEK_OF_MONTH);//本月中第几个星期
System.out.println(Calendar.DAY_OF_MONTH);//一月中第几天
System.out.println(Calendar.DAY_OF_YEAR);//一年中第几天
System.out.println(Calendar.DAY_OF_WEEK);//一周中第几天,从周日开始,周日是1
System.out.println(Calendar.DAY_OF_WEEK_IN_MONTH);//当月中第几个星期
System.out.println(Calendar.HOUR);//小时,十二小时制
System.out.println(Calendar.HOUR_OF_DAY);//小时,二十四小时制
System.out.println(Calendar.MINUTE);//分钟
System.out.println(Calendar.SECOND);//秒
System.out.println(Calendar.MILLISECOND);//毫秒
System.out.println(Calendar.ZONE_OFFSET);//
System.out.println(Calendar.DST_OFFSET);//

System.out.println(Calendar.JANUARY);//一月
System.out.println(Calendar.FEBRUARY);//二月
System.out.println(Calendar.MARCH);//三月
System.out.println(Calendar.APRIL);//四月
System.out.println(Calendar.MAY);//五月
System.out.println(Calendar.JUNE);//六月
System.out.println(Calendar.JULY);//七月
System.out.println(Calendar.AUGUST);//八月
System.out.println(Calendar.SEPTEMBER);//九月
System.out.println(Calendar.OCTOBER);//十月
System.out.println(Calendar.NOVEMBER);//十一月
System.out.println(Calendar.DECEMBER);//十二月

System.out.println(Calendar.SUNDAY);//星期日
System.out.println(Calendar.MONDAY);//星期一
System.out.println(Calendar.TUESDAY);//星期二
System.out.println(Calendar.WEDNESDAY);//星期三
System.out.println(Calendar.THURSDAY);//星期四
System.out.println(Calendar.FRIDAY);//星期五
System.out.println(Calendar.SATURDAY);//星期六

 

  • add(int field, int amount)        根据日历的规则,将给定的日历字段添加或减去指定的时间量
 System.out.println(calendar.getTime());
 //Thu Nov 17 17:06:12 CST 2022
 calendar.add(Calendar.DAY_OF_MONTH,-1);
 System.out.println(calendar.getTime());
 //Wed Nov 16 17:06:12 CST 2022
  • boolean after(Object when)

返回Calendar实例是否是另一个Calendar实例之后的时间,底层调用compareTo()方法

 Calendar newCalendar = Calendar.getInstance();
 newCalendar.add(Calendar.HOUR_OF_DAY,-3);
 System.out.println(calendar.after(newCalendar));
  • boolean before(Object when)

返回Calendar实例是否是另一个Calendar实例之前的时间

  • boolean equals(Object obj)

比较两者日期是否相等,传入的参数必须是Calendar实例

 Calendar c1 = Calendar.getInstance();
 Calendar c2 = Calendar.getInstance();
 System.out.println(c1.getTime()+"\n"+c2.getTime());
 System.out.println(c1.equals(c2));
 //Thu Nov 17 21:59:45 CST 2022
 //Thu Nov 17 21:59:45 CST 2022
 //true
  • getTime()

返回一个 Date表示此Calendar的时间值

 System.out.println(calendar.getTime());
 //Wed Nov 16 17:06:12 CST 2022
  • setTime

setTime(Date date)        //使用给定的 Date设置此日历的时间

  • set()方法
void set(int field, int value)将给定的日历字段设置为给定的值
void set(int year, int month, int date) 设置日历字段中的值 年、月、日
void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段中的值 年、月、日、时、分
void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段中的值 年、月、日、时、分、秒

示例:

 calendar.set(Calendar.HOUR_OF_DAY,23);
 System.out.println(calendar.getTime());
 //Thu Nov 17 23:37:30 CST 2022
 calendar.set(2001,8,28);
 System.out.println(calendar.getTime());
 //Fri Sep 28 23:37:30 CST 2001
 calendar.set(2008,10,13,11,59);
 System.out.println(calendar.getTime());
 //Thu Nov 13 11:59:30 CST 2008
 calendar.set(2020,11,21,12,21,12);
 System.out.println(calendar.getTime());
 //Mon Dec 21 12:21:12 CST 2020
  • getActualMaximum()方法和 getActualMinimum()方法
 //int getActualMaximum(int field)  获取指定日历字段的最大值
 System.out.println(calendar.getActualMaximum(Calendar.HOUR_OF_DAY));//获取一天中最后一小时
 //0
 System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));//获取本月最后一天
 //1
 //int getActualMaximum(int field)  获取指定日历字段的最小值
 System.out.println(calendar.getActualMinimum(Calendar.HOUR_OF_DAY));//获取一天中第一小时
 //23
 System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH));//获取本月第一一天
 //30
  • Calendar对象和Date对象的转换
 //Date对象转Calendar对象
 Calendar cal = Calendar.getInstance();
 Date date = new Date();
 cal.setTime(date);
//Calendar对象转Date对象
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

  • 学习过程中对日期类一直比较模糊,使用的时候也总是一知半解。把一些重要的点记录下来加强自己的理解,也方便复习和回顾,如果有不正确的地方还希望大家指正,后期会继续补充完善。

你可能感兴趣的:(Java,java,开发语言)