在Java中LocalDateTime类和DateTimeFormatter类的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在Java基础学习中,要获取当前的时间,以及按照格式化来打印,这个时候我们就要使用我们的LocalDateTime类来获取当前的时间,用DateTimeFormatter类来控制LocalDateTime类的对象打印的格式。


一、如何得到格式化的时间

1.如何获取当前的时间

LocalDateTime time = LocalDateTime.now();// 获取当前时间
System.out.println(time);// 输出结果为 2023-07-12T17:17:33.518178400

观察上面的代码,可以发现部分时间是与电脑时间对应的,但是这不是我们通常看到的形式,所以我们要将这个time对象进行格式化。

2.如何将时间格式

我们来使用DateTimeFormatter类来实现。

LocalDateTime time = LocalDateTime.now();// 获取当前时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd EEEE ahh:mm");// 时间的格式化输出
String s = time.format(formatter);// 用变为string类型
System.out.println(s);// 2023/07/12 星期三 下午05:28
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd E HH:mm");// 我们将它的形式改变后
System.out.println(time.format(formatter));// 2023-07-12 周三 17:28
        /*
           yyyy年份
           MM 月份
           dd 日期
           a 上下午
           HH 24小时制 hh 12小时制
           mm 分钟
           ss 秒
           EEEE 星期几
           E 周几
         */

这样我们就得到了我们常见时间的形式,上面的注释中是不同字符串,导致显示结果的不同。

3.如何自定义时间

LocalDateTime startTime = LocalDateTime.of(2022, 3, 25, 9, 4);// 自定义时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd EEEE ahh:mm");// 时间的格式化输出
System.out.println(startTime.format(formatter));// 2022-03-25 周五 10:23

我将时间按照上面的方式,就可以创建自定义的时间。

二、时间方面的计算

1.计算当前时间与自定义时间的时间差

代码如下(示例):

		LocalDateTime startTime = LocalDateTime.of(2022, 3, 25, 10, 23);// 自定义时间
        LocalDateTime endTime = LocalDateTime.now();// 当前时间
        long days = ChronoUnit.DAYS.between(startTime, endTime); // 两个时间的天数差
        long years = ChronoUnit.YEARS.between(startTime, endTime); // 两个时间的年数差
        long hours = ChronoUnit.HOURS.between(startTime, endTime); // 两个时间的小时差
        long minutes = ChronoUnit.MINUTES.between(startTime, endTime); // 两个时间的分钟差
        long weeks = ChronoUnit.WEEKS.between(startTime, endTime); // 两个时间的周数差
        long months = ChronoUnit.MONTHS.between(startTime, endTime); // 两个时间的月数差
        System.out.println();// 打印省略

注意:这个计算结果是用long类型来存储。

2.时间的比较

        LocalDateTime birthday = LocalDateTime.of(2002, 3, 17, 0, 0);
        LocalDateTime nowTime = LocalDateTime.now();// 当前时间
        int nowTimeMonthValue = nowTime.getMonthValue(); // 获取当前时间的月数
        int nowTimeDayOfMonth = nowTime.getDayOfMonth(); // 获取当前时间的天数
        int birthdayMonthValue = birthday.getMonthValue(); // 同理获取自定义时间的月数
        int birthdayDayOfMonth = birthday.getDayOfMonth(); // 同理获取自定义时间的月数 
        // 接下来就是int类型的比较

3.判断时间是否在规定时间内

// 判断时间是否在规定时间内
        LocalDateTime nowTime = LocalDateTime.now(); // 获取当前时间
        // 设置规定时间的开始时间和结束时间
        LocalDateTime startDate = LocalDateTime.of(2023,7,1,0,0);
        LocalDateTime endDate = LocalDateTime.of(2023,7,20,0,0);
        // isAfter(xx)判断时间是否在xx时间之后 isBefore(xx)判断时间是否在xx时间之前
        // 这两个方法的返回值是boolean类型,满足条件返回true,不满足返回false
        boolean b = nowTime.isAfter(startDate) && nowTime.isBefore(endDate);
        System.out.println(b); // true

4.设置在一定时间内才可以进行操作

        // 假如设置一个15分钟内操作
        int setTimeMinute = 15;
        LocalDateTime orderDate = LocalDateTime.of(2023,7,7,8,7);
        // plus方法用于在当前日期上添加一定的时间量,得到一个新的时间
        // plus方法传两个参数,时间量和时间单位
        // 时间量可以是任意整数值
        // 时间单位是指ChronoUnit枚举中定义的单位,例如在时间计算中的,ChronoUnit.DAYS,ChronoUnit.YEARS等等
        LocalDateTime deadline = orderDate.plus(setTimeMinute, ChronoUnit.MINUTES);
        LocalDateTime nowTime = LocalDateTime.now();// 获取当前时间
        if(nowTime.isAfter(deadline)){
            System.out.println("操作时间已过");
        }else{
            // 操作代码
        }

总结

这些仅仅只是时间的部分用法,要多练多写,这是我学习该内容的笔记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值