简介
Java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。注意Calendar是一个抽象类,无法直接创建对象使用。里面有一个静态方法public static Calendar getInstance()使用默认时区和语言环境获得一个日历。返回的 Calendar
基于当前时间,使用了默认时区和默认语言环境。(简而言之就是返回此类的子类对象)
常用方法:
- public int get(int field):返回给定日历字段的值。
- public void set(int field, int value):将给定的日历字段设置为给定值。
- public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime()`:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
成员方法参数:
- int field :日历类的字段,(也就是成员变量值),可以使用Calendar类的静态成员变量名称获取。
字段值的具体含义为:
- YEAR :默认情况下获取系统当前的年份
- MONTH:默认情况下获取系统当前年中的月份数,一年中的一月的值为 0
- WEEK_OF_YEAR:默认情况下获取系统当前年中的星期数. 一年中的第一个星期的值为 1.
- WEEK_OF_MONTH:默认情况下获取系统当前月中的星期数. 一个月中第一个星期的值为 1.
- DAY_OF_MONTH:默认情况下获取系统当前一个月中的某一天. 它与 DATE 是同义词. 一个月中第一天的值为 1.
- DATE :等同 DAY_OF_MONTH
- DAY_OF_YEAR :默认情况下获取系统当前年中的天数. 一年中第一天的值为 1.
- DAY_OF_WEEK:默认情况下获取系统当前一个星期中的某天, 一周中第一天的值为 1
- AM_PM默认情况下获取系统当前HOUR 是在中午之前还是在中午之后. [0, 12) 为上午, AM_PM 值为 1 [12, 24)为下午, AM_PM 值为 0
- HOUR:默认情况下获取系统当前上午或下午的小时.
- HOUR_OF_DAY:默认情况下获取系统当前一天中的小时。 HOUR_OF_DAY 用于 24 小时制
- MINUTE:默认情况下获取系统当前一小时中的分钟
- SECOND:默认情况下获取系统当前一分钟中的秒
代码举例:
package demo03;import java.sql.SQLOutput;import java.util.Calendar;import java.util.Date;public class CalendarTest { public static void main(String[] args) { //获取日历类子类对象 Calendar calendar = Calendar.getInstance(); // get(int field)获取指定字段的值 System.out.println("现在的年份是" + calendar.get(Calendar.YEAR) + "年");//获取当前系统的年份 System.out.println("现在的月份是" + calendar.get(Calendar.MONTH) + "月");//获取当前系统的月 System.out.println("现在是一个月中第" + calendar.get(Calendar.DATE) + "天");//获取当前系统的日 // set(int field, int value):给指定字段设置新的值 calendar.set(Calendar.YEAR, 2022); System.out.println("现在的年份是" + calendar.get(Calendar.YEAR) + "年");//获取当前系统设置后的年份 // add(int field, int amount):为给定的日历字段添加(整数)或减去(负数)指定的时间量。 calendar.add(Calendar.DATE, -3); System.out.println("现在的年份是" + calendar.get(Calendar.DATE) + "天");//获取当前系统减3日后的值} Date date = calendar.getTime();//获取系统当前的Date对象 long time = date.getTime();//从时间原点到现在的系统时间过去了多少毫秒 System.out.println(time); }}
执行结果
注意:
- 西方星期的开始为周日,中国为周一。
- 在Calendar类中,月份的表示是以0-11代表1-12月。
- 日期是有大小关系的,时间靠后,时间越大。