Java类——日期类:Date类和Calendar类

文章目录

  • Date 日期类
    • 构造对象
    • Date 中时间毫秒数和日期相互转换:
    • 从日期信息中获取对应时间信息(过时)
  • Calendar 日历类
    • 获取对象
    • 获取日期特定部分
    • 对日期信息进行设置和计算

Date 日期类

Date 类可以获取日期数据的瞬时值,精确到毫秒。

构造对象

Date 类提供了两个构造函数来实例化对象:

  1. Date date= new Date();
    使用当前日期和时间来初始化对象;
  2. Date(Long time);
    参数time表示自1970年1月1日起计算的毫秒数,用来来初始化对象;
  3. 示例:
    Date date = new Date();
    System.out.println(date);
    // 根据系统时间获取自1970年1月1日以来的毫秒数
    long longTime = System.currentTimeMillis();
    System.out.println(longTime);
    // 有参构造
    Date date1 = new Date(longTime);
    System.out.println(date1);
    
    输出:
    无参构造获取日期时间:Sat Oct 15 18:45:14 CST 2022
    毫秒数:1665830714104
    有参构造获取日期时间:Sat Oct 15 18:45:14 CST 2022
    

Date 中时间毫秒数和日期相互转换:

  1. 示例:
    // 有参构造,毫秒转日期
    Date date = new Date(1665830714104L);
    System.out.println("毫秒转日期:"+date);
    // 日期转毫秒数
    long time = date.getTime();
    System.out.println("日期转毫秒:"+time);
    
    输出:
    毫秒转日期:Sat Oct 15 18:45:14 CST 2022
    日期转毫秒:1665830714104
    

从日期信息中获取对应时间信息(过时)

在Date类中,通过get方法获取时间相关的信息,但是要注意的是,自JDK1.1版本后,很多get方法已经过时。因为年份从1900年开始算起,获取年份时需要加上1900才是当前年份;月份从0开始算起,获取月份信息时需要加1;Date的星期日到星期六以数字0-6来表示。

  1. 示例:

    // 无参构造
    Date date = new Date();
    System.out.println("日期:"+date);
    int year = date.getYear()+1900;
    System.out.println("年份:"+year);
    int month = date.getMonth()+1;
    System.out.println("年份:"+month);
    int day = date.getDate();
    System.out.println("几日:"+day);
    int hour = date.getHours();
    System.out.println("小时:"+hour);
    int minute = date.getMinutes();
    System.out.println("分钟:"+minute);
    int second = date.getSeconds();
    System.out.println("分钟:"+second);
    int week = date.getDay();
    System.out.println("星期:"+week);
    

    输出:

    日期:Sat Oct 15 18:58:01 CST 2022
    年份:2022
    年份:10
    几日:15
    时:18
    分:58
    秒:1
    星期:6
    

Calendar 日历类

Calendar 类是一个抽象类,提供了关于日期计算的相关功能,比如:设置和获取日期数据的特定部分;年、月、日、时、分、秒的展示和计算。 Calendar 的一个具体子类 GregorianCalendar 类,用来表示大家熟悉的日历表示法的,提供了世界上大多数国家/地区使用的标准日历系统。

获取对象

通过 Calendar.getInstance() 获取到 Calendar 对象。

  1. 示例:

    // 根据系统当前日期创建的Calendar对象:
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar);
    

    输出:

    java.util.GregorianCalendar[time=1665832875835,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=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=21,SECOND=15,MILLISECOND=835,ZONE_OFFSET=28800000,DST_OFFSET=0]
    

    由输出结果不能直观的看出时间,我们更多地是用来对时间进行处理,获取具体信息。

获取日期特定部分

注意月份是从0开始,一月是0,二月是1,以此类推,12月是11。 周日到周六分别用1~7表示,周日是1,周一是2…周六是7。

  1. 示例:

    Date date = new Date();
    System.out.println("Date日期:"+date);
    Calendar calendar = Calendar.getInstance();
    System.out.println("Calendar日历:"+calendar);
    int year = calendar.get(Calendar.YEAR);
    System.out.println("年份:" + year);
    int month = calendar.get(Calendar.MONTH) + 1;
    System.out.println("月份:" + month);
    int day = calendar.get(Calendar.DATE);
    System.out.println("几日:" + day);
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    System.out.println("时:" + hour);
    int minute = calendar.get(Calendar.MINUTE);
    System.out.println("分:" + minute);
    int second = calendar.get(Calendar.SECOND);
    System.out.println("秒:" + second);
    // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
    int week = calendar.get(Calendar.DAY_OF_WEEK);
    System.out.println("星期:" + week);
    // 今年的第几天天
    int day1 = calendar.get(Calendar.DAY_OF_YEAR);
    System.out.println("今年第"+day1+"天");
    // 今年的第几周
    int week1 = calendar.get(Calendar.WEEK_OF_YEAR);
    System.out.println("今年第"+week1+"周");
    

    输出:

    Date日期:Sat Oct 15 19:41:36 CST 2022
    Calendar日历:java.util.GregorianCalendar[time=1665834096246,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=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=41,SECOND=36,MILLISECOND=246,ZONE_OFFSET=28800000,DST_OFFSET=0]
    年份:2022
    月份:10
    几日:15
    时:19
    分:41
    秒:36
    星期:7
    今年第288天
    今年第42周
    

对日期信息进行设置和计算

  1. 示例:

    Date date = new Date();
    System.out.println("Date日期:"+date);
    Calendar calendar = Calendar.getInstance();
    System.out.println("Calendar日历:"+calendar);
    // 设置当前月份
    calendar.set(Calendar.MONTH,4);
    System.out.println("设置分月份:"+(calendar.get(Calendar.MONTH)+1));
    // 计算月份
    calendar.add(Calendar.MONTH, 5);
    System.out.println("计算的月份:"+(calendar.get(Calendar.MONTH)+1));
    

    输出:

    Date日期:Sat Oct 15 19:48:41 CST 2022
    Calendar日历:java.util.GregorianCalendar[time=1665834521828,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=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=48,SECOND=41,MILLISECOND=828,ZONE_OFFSET=28800000,DST_OFFSET=0]
    设置分月份:5
    计算的月份:10
    

你可能感兴趣的:(Java,java)