5. Date类和Calendar类

1. 第一代日期类

image

32ca9bde23de1feef9c8120957905773

代码示例

package com.baidu.www;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;

/**
 * Date
 *      简介:
 *          日期类:用于操作时间相关信息
 *      构造方法:
 *          Date()     构造一个日期对象,当前系统时间,精确到毫秒
 *          Date(long) 构造一个日期对象,时间为自“1970年1月1日00:00:00 GNT”起,至指定参数的毫秒数
 *      成员方法:
 *          long getTime() 将日期对象转换成对应时间的毫秒值
 */

public class Test {
    public static void main(String[] args) throws ParseException {
        // 测试Date类
        // 测试空参构造,采用当前操作系统的默认时间
        // 默认输出的日期格式是国外的方式,因此通常需要对格式进行转换
        Date date1 = new Date();
        System.out.println("当前时间:" + date1);

        // 创建该对象可以制定相应的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
        String format = sdf.format(date1);
        System.out.println(format);

        // 可以把格式化的String转换为对应的Date
        String s = "2025年08月19日 08:00:20 星期二";
        Date parse = sdf.parse(s);
        System.out.println(parse);

        // 获取当前操作系统的毫秒值
        long time = date1.getTime();
        System.out.println("当前时间:" + time);

        // 创建指定时间
        Date date2 = new Date(1755010487159L);
        System.out.println("指定时间:" + date2);
    }
}

2. 第二代日期类

a917b0e6539d90a40d8462ee503b89c4

15feaf9d43c7d38d91218588e7a2282e

继承关系

e077c22eca593d66355e705685daa772

代码示例

package com.baidu.www;

import java.util.Calendar;

/**
 *  *  Calendar类
 *  *      简介:
 *  *          日历类,用于操作日期相关信息
 *             是一个抽象类,构造器是private
 *             通过getinstance()获取实例
 *             提供大量的方法和字段
 *             没有提供对应的格式化的类
 *             如果需要24小时,HOUR -> HOUR_OF_DAY
 *  *      成员方法:
 *  *          static Calendar getInstance();   根据当前系统时区和语言环境获取日历对象
 *  *          int get(int field);              返回给定日历字段的值
 *  *          void set(int field, int value);  将给定的日历字段设置为指定的值
 */

public class Test2 {
    public static void main(String[] args) {
        // 测试Calendar类
        // 获取Calendar类型的对象
        Calendar c = Calendar.getInstance();
//        System.out.println(c);

        // 获取年月日的信息
        System.out.print(c.get(Calendar.YEAR) + "年");
        System.out.print(c.get(Calendar.MONTH) + 1); // 0~11表示月份,表示1~12月
        System.out.println("月"+c.get(Calendar.DATE)+"日");
        System.out.println("时:"+c.get(Calendar.HOUR));
        System.out.println("时:"+c.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:"+c.get(Calendar.MINUTE));
        System.out.println("秒:"+c.get(Calendar.SECOND));

        // 设置指定时间 2055 5 5
//        c.set(Calendar.YEAR, 2055);
//        System.out.print(c.get(Calendar.YEAR) + "年");
//        System.out.print(c.get(Calendar.MONTH) + 1); // 0~11表示月份,表示1~12月
//        System.out.println("月"+c.get(Calendar.DATE)+"日");

        c.set(2055,4,5);
        System.out.print(c.get(Calendar.YEAR) + "年");
        System.out.print(c.get(Calendar.MONTH) + 1); // 0~11表示月份,表示1~12月
        System.out.println("月"+c.get(Calendar.DATE)+"日");
    }
}

3. 第三代日期类

9fc7929ff0a4ccb8b2d533896330e8c4

继承关系

8e7dffed7cb16f50c712687d1f38142a

(1)LoadDateTime类

10b47da554c2f305dc4839448a5a5cf5

代码示例

package com.baidu.www;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class LocalDate_ {
    public static void main(String[] args) {
        // 第三代日期
        // 使用 now 返回表示当前日期时间的对象
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

        System.out.println("年:" + ldt.getYear());
        System.out.println("月:" + ldt.getMonth());
        System.out.println("月:" + ldt.getMonthValue());
        System.out.println("月:" + ldt.getDayOfMonth());
        System.out.println("时:" + ldt.getHour());
        System.out.println("分:" + ldt.getMinute());
        System.out.println("秒:" + ldt.getSecond());

        // 获取年月日
        LocalDate now = LocalDate.now();
        System.out.println(now);

        // 获取时分秒
        LocalTime now2 = LocalTime.now();
        System.out.println(now2);
    }
}

(2)DataTimeFormatter格式日期类

0e306346071cf9a1378d97b2e39e101b

代码示例

package com.baidu.www;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDate_ {
    public static void main(String[] args) {
        // 第三代日期
        // 使用 now 返回表示当前日期时间的对象
        LocalDateTime ldt = LocalDateTime.now();

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");
        String strDate = dtf.format(ldt);
        System.out.println(strDate);
    }
}

(3)Instant时间戳

469d759e9810075a431672a807efeb25

代码示例

package com.baidu.www;

import java.time.Instant;
import java.util.Date;

public class LocalDate_ {
    public static void main(String[] args) {
        Instant instant = Instant.now();
        System.out.println(instant);

        Date date = Date.from(instant);
        System.out.println(date);

        Instant instant1 = date.toInstant();
        System.out.println(instant1);
    }
}

(4)更多方法

490a3f33100d50bf2aa1ead570b19b46

代码示例

package com.baidu.www;

import java.time.LocalDateTime;

public class LocalDate_ {
    public static void main(String[] args) {
        // 提供plus和minus方法对当前时间加减
        LocalDateTime ldt = LocalDateTime.now();

        // 890天后
        System.out.println(ldt.plusDays(890));

        // 3456分钟前
        System.out.println(ldt.minusMinutes(3456));
    }
}

4. 简要概述

0c4e4143d9af5c39da20e01d32de90db

posted @ 2025-08-20 19:15  无敌美少女战士  阅读(6)  评论(0)    收藏  举报