2-3 2-4 JDK8时间日期处理类处理

2-3 2-4 JDK8时间日期处理类处理


一、背景解析

  • 在JDK8之前处理时间使用 SimpleDataFormat、Calender 、Data等类 ,来做时间上的处理。
    • 线程安全: Date不是线程安全的,你需要编写额外的代码处理线程安全问题
    • API设计和易用性: 由于Date和Calendar的设计不当你无法完成日常的日期操作

在JDK8中将会采用java.time包下的所有类来代替传统方式。以下是常用类示意图
在这里插入图片描述

二、各类分别讲解

其中用来获取时间的LocalTime、LocalDate、LocalDateTime三个类有以下几个共同点:(1)都不可被实例化。实例化采用 类名 变量名 = 类名.now()方式来进行实例化。(2)获取时间详细信息都采用 getXxxx(); 方法来获取单个信息。(3)修改时间大小都采用 plusXxxx(要增加/删除的大小); 方法

1)、LocalTime(时间)#时:分:秒

该类获取的时间没有日期,它是当地时间的描述。

public class Main {
    public static void main(String[] args) throws IOException {
        LocalTime now = LocalTime.now();// 获取本地时间
        System.out.println(now);// 日期打印
        System.out.println(now.getHour());// 获取小时
        System.out.println(now.getMinute());// 获取分钟
        System.out.println(now.getSecond());// 获取秒
        System.out.println(now.plusHours(2));// 获取几个小时后的时间 plus可以传负数
        System.out.println(now.plusMinutes(30));// 获取多少分钟后的时间
        System.out.println(now.plusSeconds(30));// 获取多少秒后的时间
    }
}

在这里插入图片描述

2)、LocalDate(日期)#年-月-日

这个类用来描述日期并无时间描述。

public class Main {
    public static void main(String[] args) throws IOException {
        LocalDate now = LocalDate.now();// 获取本地日期
        System.out.println(now);// 日期打印
        System.out.println(now.getYear());// 获取年份
        System.out.println(now.getMonth());// 获取月份
        System.out.println(now.getMonthValue());// 获取数字格式月份
        System.out.println(now.getDayOfWeek());// 获取星期几
        System.out.println(now.getDayOfMonth());// 获取多少号
        System.out.println(now.plusDays(2)); // 获取多少天后的日期 plus可以传负数
        System.out.println(now.plusMonths(3));// 获取几个月后的日期
        System.out.println(now.plusWeeks(1));// 获取几个星期后的日期
        System.out.println(now.plusYears(1));// 获取几年后的日期
    }
}

在这里插入图片描述

3)、LocalDateTime(日期时间)#年-月-日 时:分:秒

这个类既描述日期也描述时间。

public class Main {
    public static void main(String[] args) throws IOException {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime newDate = LocalDateTime.of(2020, 11, 11, 11, 11);// 2020-11-11 11:11
        System.out.println(now);// 日期打印
        System.out.println(newDate);// 自定义日期打印
        System.out.println(now.isAfter(newDate));// 判断 now  在 newDate 之后
        System.out.println(now.isBefore(newDate));// 判断 now  在 newDate 之前
    }
}

在这里插入图片描述

4)、DateTimeFormatter(时间日期格式处理)
public class Main {
    public static void main(String[] args) throws IOException {
        LocalDateTime now = LocalDateTime.now();
        // 日期格式转换类
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        String format = dateTimeFormatter.format(now);// 格式转换
        System.out.println(now);// 日期打印
        System.out.println(format); // 转换后的日期
    }
}

4.png

5)、Duration(时间差值计算)
public class Main {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime date = LocalDateTime.of(2020, 11, 11, 11, 11, 11);
        Duration duration = Duration.between(now, date);
        System.out.println(now);
        System.out.println(date);
        System.out.println("相差"+duration.toDays()+"天");
        System.out.println("相差"+duration.toHours()+"小时");
        System.out.println("相差"+duration.toMinutes()+"分钟");
    }
}

5.png

6)、Period(日期差值计算)
public class Main {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
        LocalDate date = LocalDate.of(2020, 11, 11);
        Period period = Period.between(now, date);
        System.out.println(now);
        System.out.println(date);
        System.out.println("相差"+period.getYears()+"年"+period.getMonths()+"个月"+period.getDays()+"日");
    }
}

6.png


未经授权不得转载或转载请注明出处

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值