JDK7 Calendar类

Calendar

Calendar概述
  • Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日。

  • 细节:Calendar是一个抽象类,不能直接创建对象。

获取对象

Calendar底层:会根据不同时区获取不同的日历对象,默认表示当前时间。

它将会把时间中的纪元,年,月,日,时,分,秒,星期,等等都放到一个数组当中

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 通过getInstannce方法获取Calendar对象
        Calendar c = Calendar.getInstance();
        // 打印结果
        System.out.println(c);
    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=55856:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Calendar
java.util.GregorianCalendar[time=1675970102620,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=1,WEEK_OF_YEAR=6,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=41,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=3,HOUR_OF_DAY=3,MINUTE=15,SECOND=2,MILLISECOND=620,ZONE_OFFSET=28800000,DST_OFFSET=0]

可以看到它输出了当前时间


成员方法

给日历设置日期对象

import java.util.Calendar;
import java.util.Date;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 通过getInstannce方法获取Calendar对象
        Calendar c = Calendar.getInstance();
        // 带参构造创建时间原点Date
        Date d = new Date(0L);
        // 设置Calender对象的时间
        c.setTime(d);
        // 打印结果
        System.out.println(c);
    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=56118:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Calendar
java.util.GregorianCalendar[time=0,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1970,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]

可以看到它输出了时间原点1970年1月1日。为什么它的月份是0呢,因为它的月份范围是0~11,从0开始是1月,11是12月。在西方,星期天是一周的第一天,所以1代表的是星期天。


拿到时间毫秒值getTimeInMillis()

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 获取日历对象
        Calendar c = Calendar.getInstance();
        // 获取从时间原点开始到当前系统时间的毫秒值
        long timeInMillis = c.getTimeInMillis();
        // 打印结果
        System.out.println(timeInMillis);
    }
}

给日历设置时间毫秒值setTimeInMillis(long millis)

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 获取日历对象
        Calendar c = Calendar.getInstance();
        // 获取从时间原点开始到当前系统时间的毫秒值
        c.setTimeInMillis(1000L);
        // 打印结果
        System.out.println(c);
    }
}

取日历中的某个字段信息get(Calendar.XXX)

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 获取日历对象
        Calendar c = Calendar.getInstance();

        // 获取年月日
        int year = c.get(Calendar.YEAR);
        int monch = c.get(Calendar.MONTH);
        int date = c.get(Calendar.DATE);

        // 打印结果
        System.out.println(year + " " + monch + " " + date);
    }
}

修改日历的某个字段set(Calendar.XXX,修改值)

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 获取日历对象
        Calendar c = Calendar.getInstance();

        // 修改年月日
        c.set(Calendar.YEAR,2000);
        c.set(Calendar.MONTH,12);
        c.set(Calendar.DATE,5);

        // 获取年月日
        int year = c.get(Calendar.YEAR);
        int monch = c.get(Calendar.MONTH);
        int date = c.get(Calendar.DATE);

        // 打印结果
        System.out.println(year + " " + monch + " " + date);
    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=51731:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Calendar
2001 0 5

可以看到为什么修改为12月份时,直接增加了1年,并且为0月份,因为在日历里面月份的范围为0~11,0为1月份,当超过了11时,它将会增加一年。


为某个字段增加/减少指定的值add(Calendar.XXX,修改值)

import java.util.Calendar;

public class JDK7_Calendar {
    public static void main(String[] args){

        // 获取日历对象
        Calendar c = Calendar.getInstance();

        // 修改指定字段值
        c.add(Calendar.DATE,1);
        c.add(Calendar.YEAR,-1);

        // 获取年月日
        int year = c.get(Calendar.YEAR);
        int monch = c.get(Calendar.MONTH);
        int date = c.get(Calendar.DATE);

        // 打印结果
        System.out.println(year + " " + monch + " " + date);
    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=51770:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Calendar
2022 1 11

可以看到,当我们日期的时候,修改值如果为正数,将会增加,如果我们的值为负数时候,它将会减少。


总结

1.Calendar表示什么?

  • Calendar表示一个时间的日历对象。

2.如何获取对象?

  • 通过getInstance方法获取对象

3.常见方法:

  • setXXX:修改

  • getXXX:获取

  • addXXX:在原有的基础上进行增加或者减少

4.细节点:

  • 日历类中月份的范围:0~11

  • 日历类中星期的特点:星期天是一周中的第一天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值