0
点赞
收藏
分享

微信扫一扫

JavaJDK时间类之Calendar

一:Calendar类的介绍

  • java.util.Calendar类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。
  • 有两种方式可以获取GregorianCalendar对象:
  • 直接创建GregorianCalendar对象;
  • 通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象

二:Calendar类的常用方法

方法名

说明

public static Calendar getInstance()

获取一个它的子类GregorianCalendar对象。

public int get(int field)


获取某个字段的值。field参数表示获取哪个字段的值,可以使用Calender中定义的常量来表示:Calendar.YEAR : 年Calendar.MONTH :月Calendar.DAY_OF_MONTH:月中的日期Calendar.HOUR:小时Calendar.MINUTE:分钟Calendar.SECOND:秒Calendar.DAY_OF_WEEK:星期

public void set(int field,int value)


设置某个字段的值

public void add(int field,int amount)

为某个字段增加/减少指定的值

三:案例演示

1.获取日历对象

演示截图如下:

                  JavaJDK时间类之Calendar_System

运行结果截图:

                  JavaJDK时间类之Calendar_字段_02

2.给日历设置日期对象

截图如下:

                  JavaJDK时间类之Calendar_System_03

运行结果如下:

                  JavaJDK时间类之Calendar_java_04

3.

public int get(int field)                         取日期中的某个字段信息

public int set(int field,int value)               修改日期中的某个字段信息

public void add(int field,int amount)             为某个字段增加/减少指定的值

截图如下:

                  JavaJDK时间类之Calendar_字段_05

                  JavaJDK时间类之Calendar_java_06

运行结果如下:

                  JavaJDK时间类之Calendar_字段_07

所有的案例代码如下:

 public static void main(String[] args) {

                /*
                   public static Calendar getInstance()              获取当前的日历对象

                   public final Date getTime()                       获取日期对象
                   public final setTime(Date date)                   给日历设置日期对象

                   public long getTimeInMillis()                     拿到时间的毫妙值
                   public long setTimeInMillis(long millis)          给日历设置时间毫秒值

                   public int get(int field)                         取日期中的某个字段信息
                   public int set(int field,int value)               修改日期中的某个字段信息
                   public void add(int field,int amount)             为某个字段增加/减少指定的值

                                                                 */

        //1.获取日历对象,在这里使用getInstance来获取对象
        Calendar c = Calendar.getInstance();
        //打印一下结果
        System.out.println(c);//util.GregorianCalendar[time=1689140041338...
        //打印的结果很长,里面有很多的参数,
        //它的底层原理是:会根据系统的不同时区来获取不同的日历对象
        //会把时间中的纪元、年、月、日、时、分、秒,星期等等放到一个数组当中
        //0:  纪元
        //1:  年
        //2:  月
        //3:  一年中的第几周
        //4:  一个月中的第几周
        //5:  一个月中的第几天(日期)
        //......
        //注意获取到的月份并不是真实的月份,真实的月份是在获取到的月份再加1
        //MONTH=6,WEEK_OF_YEAR=28,WEEK_OF_MONTH=3
        //可以从获取的月份和真实的月份进行比较,
        //我们发现,控制台输出的月份是6月,而实际上是7月


        //2.给日历设置日期对象
        //创建一个日期对象
        Date d1 = new Date(20000L);
        //利用setTime方法来修改日历代表的日期
        c.setTime(d1);
        System.out.println(c);//java.util.GregorianCalendar[time=20000,areFieldsSet=true,
        //可以看出time值发生了改变由 1689140814495变为了20000


        //3.
        //public int get(int field)                         取日期中的某个字段信息
        //public int set(int field,int value)               修改日期中的某个字段信息
        //public void add(int field,int amount)             为某个字段增加/减少指定的值


        c.set(Calendar.YEAR, 2026);
        c.set(Calendar.MONTH, 6);
        c.set(Calendar.DAY_OF_MONTH, 8);


        //调用方法在这个基础上增加一个月
        c.add(Calendar.MONTH, -1);


        //java在Calendar类中,把索引对应的都定义成常量
        //int year  =   c.get(1);
        //int month =   c.get(2) + 1;
        //int date  =   c.get(5);
        //int week  =   c.get(DAY_OF_WEEK);

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DAY_OF_MONTH);
        int week = c.get(Calendar.DAY_OF_WEEK);

        System.out.println(year + ", " + month + ", " + date + ", " + getWeek(week)); //1970, 1, 1  星期四


    }


    public static String getWeek(int index) {
        //定义一个数组,让汉字星期几 跟1~7产生对应的关系
        //  1(星期日) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
        String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        //根据索引返回对应的星期
        return arr[index];


    }

}







举报

相关推荐

0 条评论