超详细的JAVA高级进阶基础知识05

目录

5. 面向对象高级 - 时间API

5.1 JDK8以前的时间API

5.1.1 Date 类

5.1.2 Date的构造器及其常见方法

5.1.3 SimpleDateFormat 类 

 5.1.4 SimpleDateFormat的构造器及其格式化方法

5.1.5 总结 

5.1.6 Calendar 类 

5.1.7 Calendar 类使用

5.1.8 Calendar 类常用方法

5.1.9 Calendar 总结 

5.2 JDK8以后的时间API

5.2.1 JDK8前后时间API对比 

5.2.2 JDK8四类时间API 

5.2.3 LocalDate、LocalTime、LocalDateTime 

5.2.4 LocalDate、LocalTime、LocalDateTime总结 

5.2.5 DateTimeFormatter 类 

5.2.6 Instant 时间戳

5.2.7 ZoneId 类

5.2.8 Duration、Period、ChronoUnit 

5.3 学习目标 


5. 面向对象高级 - 时间API

⭐ Java开发中几乎离不开时间类 (以京东购物为例)

 

订单记录 

 

时间API 

 

 

5.1 JDK8以前的时间API

5.1.1 Date 类

  代表的是日期时间 

5.1.2 Date的构造器及其常见方法

 

Date的构造器及其常见方法使用实例如下: 

  // 需要使用JDK7 jdk7.date;
public class DateDemo1 {
  
    public static void main(String[] args) {
        // 将当前时间, 封装为Date日期对象
        Date d1 = new Date();
        System.out.println(d1);

        // 把时间毫秒值转换成Date日期对象
        Date d2 = new Date(1000L);
        System.out.println(d2);

        System.out.println(d1.getTime());
        System.out.println(d2.getTime());

        System.out.println("----------------------");

        Date d3 = new Date();
        d3.setTime(0L);
        System.out.println(d3);
    }
}

5.1.3 SimpleDateFormat  

        用于日期格式化 

没有使用SimpleDateFormat的时间显示情况如下所示: 

 

 5.1.4 SimpleDateFormat的构造器及其格式化方法

 

// 注意使用的是JDK7中的 jdk7.format;

public class SimpleDateFormatDemo {
    /*
        SimpleDateFormat类 : 用于日期格式化

        1. 构造方法 :

                public SimpleDateFormat() : 创建一个日期格式化对象, 使用 [默认模式]
                public SimpleDateFormat(String pattern) : 创建一个日期格式化对象, [手动指定模式]

        2. 常用方法 :

                public final String format(Date date) : 将日期对象, 转换为字符串
                public public final Date parse(String source) : 将日期字符串, 解析为日期对象

     */
    public static void main(String[] args) throws ParseException {

        String today = "2023年2月4日";

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");

        Date date = simpleDateFormat.parse(today);

        System.out.println(date);

    }

    private static void method() {
        // 创建一个日期格式化对象, 使用 [默认模式]
        // SimpleDateFormat simpleDateFormat = new SimpleDateFormat();

        // 创建一个日期格式化对象, [手动指定模式]
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");

        // 创建Date对象, 封装此刻的时间
        Date date = new Date();

        // 将日期对象, 转换为字符串
        String result = simpleDateFormat.format(date);

        System.out.println(result);
    }
}

5.1.5 总结 

  

5.1.6 Calendar 类 

    代表的是系统此刻时间对应的日历,通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。

 

5.1.7 Calendar 类使用

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

// 创建 多态 Calendar的对象    
Calendar c = Calendar.getInstance();

 

5.1.Calendar 类常用方法

 

5.1.9 Calendar 总结 

  

5.2 JDK8以后的时间API

5.2.1 JDK8前后时间API对比 

5.2.2 JDK8四类时间API 

 

5.2.3 LocalDate、LocalTime、LocalDateTime 

   

(由于三者的逻辑大同小异,以下以LocalDateTime为例)

    具体代码实现如下: 

public class LocalDateTimeDemo {
    public static void main(String[] args) {
        // 日期 时间
        LocalDateTime nowDateTime = LocalDateTime.now();
        System.out.println("今天是:" + nowDateTime);
        // 年
        System.out.println(nowDateTime.getYear());
        // 月
        System.out.println(nowDateTime.getMonthValue());
        // 日
        System.out.println(nowDateTime.getDayOfMonth());
        // 时
        System.out.println(nowDateTime.getHour());
        // 分
        System.out.println(nowDateTime.getMinute());
        // 秒
        System.out.println(nowDateTime.getSecond());
        // 纳秒
        System.out.println(nowDateTime.getNano());

        // 日 : 当年的第几天
        System.out.println("dayOfYear:" + nowDateTime.getDayOfYear());
        // 星期
        System.out.println("星期" + nowDateTime.getDayOfWeek());
        System.out.println("星期" + nowDateTime.getDayOfWeek().getValue());
        // 月份
        System.out.println("月份" + nowDateTime.getMonth());
        System.out.println("月份" + nowDateTime.getMonth().getValue());
    }
}

  

5.2.4 LocalDate、LocalTime、LocalDateTime总结 

  

5.2.5 DateTimeFormatter  

       用于时间的格式化和解析 

  具体代码实现如下

public class DateTimeFormatterDemo {
    /*
        用于时间的格式化和解析:

        1. 对象的获取 :

                static DateTimeFormatter ofPattern(格式) : 获取格式对象

        2. 格式化 :

                String format(时间对象) : 按照指定方式格式化

        3. 解析 :

                LocalDateTime.parse("解析字符串", 格式化对象);
                LocalDate.parse("解析字符串", 格式化对象);
                LocalTime.parse("解析字符串", 格式化对象);

     */
    public static void main(String[] args) {

        LocalDateTime now = LocalDateTime.now();
        System.out.println("格式化之前:" + now);

        // 获取格式化对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日");

        // 格式化
        String result = formatter.format(now);
        System.out.println("格式化之后:" + result);

        // 解析
        String time = "2008年08月08日";
        LocalDate parse = LocalDate.parse(time, formatter);
        System.out.println(parse);

    }
}

5.2.6 Instant 时间戳

  用于表示时间的对象,  类似之前所学习的 Date 

 

=public class InstantDemo {
    /*
        Instant类 : 用于表示时间的对象,  类似之前所学习的Date
     */
    public static void main(String[] args) {

        Instant now = Instant.now();
        System.out.println("当前的时间戳是:" + now);

        ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime);


    }
}

5.2.7 ZoneId

方法名

说明

static Set<String> getAvailableZoneIds​()

获取Java中支持的所有时区

static ZoneId systemDefault​()

获取系统默认时区

static ZoneId of​(String zoneId)

获取一个指定时区

5.2.8 Duration、Period、ChronoUnit 

 主要了解以下代码

/**
 * ChronoUnit可用于在单个时间单位内测量一段时间,这个工具类是最全的了,可以用于比较所有的时间单位
 */
public class ChronoUnitDemo {
    public static void main(String[] args) {
        // 本地日期时间对象:此刻的
        LocalDateTime today = LocalDateTime.now();
        System.out.println(today);

        // 生日时间
        LocalDateTime birthDate = LocalDateTime.of(2023, 2, 4,
                0, 0, 0);
        System.out.println(birthDate);

        System.out.println("相差的年数:" + ChronoUnit.YEARS.between(birthDate, today));
        System.out.println("相差的月数:" + ChronoUnit.MONTHS.between(birthDate, today));
        System.out.println("相差的周数:" + ChronoUnit.WEEKS.between(birthDate, today));
        System.out.println("相差的天数:" + ChronoUnit.DAYS.between(birthDate, today));
        System.out.println("相差的时数:" + ChronoUnit.HOURS.between(birthDate, today));
        System.out.println("相差的分数:" + ChronoUnit.MINUTES.between(birthDate, today));
        System.out.println("相差的秒数:" + ChronoUnit.SECONDS.between(birthDate, today));
        System.out.println("相差的毫秒数:" + ChronoUnit.MILLIS.between(birthDate, today));
        System.out.println("相差的微秒数:" + ChronoUnit.MICROS.between(birthDate, today));
        System.out.println("相差的纳秒数:" + ChronoUnit.NANOS.between(birthDate, today));
        System.out.println("相差的半天数:" + ChronoUnit.HALF_DAYS.between(birthDate, today));
        System.out.println("相差的十年数:" + ChronoUnit.DECADES.between(birthDate, today));
        System.out.println("相差的世纪(百年)数:" + ChronoUnit.CENTURIES.between(birthDate, today));
        System.out.println("相差的千年数:" + ChronoUnit.MILLENNIA.between(birthDate, today));
        System.out.println("相差的纪元数:" + ChronoUnit.ERAS.between(birthDate, today));
    }
}

5.3 学习目标 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值