LocalDateTime处理日期和时间业务场景

 // 获取当前时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        /*
         yyyy:年份,例如:2023
         MM:月份,例如:07
         dd:日期,例如:06
         HH:小时(24小时制),例如:13
         mm:分钟,例如:16
         ss:秒钟,例如:04
        */
        // 格式化输出当前时间
        // 使用 DateTimeFormatter 的 ofPattern 方法创建一个格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 使用 format 方法将 LocalDateTime 格式化为指定的字符串
        String formattedDateTime = now.format(formatter);
        System.out.println(formattedDateTime);



// 需求:在金融系统中,计算两个日期时间之间的天数差
// 需求: 在ERP系统中,计算当前时间距离下一个交货日期的天数差
// 需求:在医疗系统中,记录患者的就诊时长,用于医生和护士的工作记录和统计。
// 需求:在物流系统中,计算货物从出发到到达的总时间
// 自定义时间
        LocalDateTime startTime = LocalDateTime.of(2022, 4, 5, 0, 0, 0);
        LocalDateTime endTime = LocalDateTime.now();

        // ChronoUnit用于 计算日期间隔
        // 计算当前时间和另一个时间之间的天数差
        // 开始时间放前面    结束时间放后面
        long daysDiff = ChronoUnit.DAYS.between(startTime, endTime);
         // 计算当前时间和另一个时间之间的年数差 ChronoUnit.YEARS.between(startTime, endTime)
        // 计算当前时间和另一个时间之间的小时数差 ChronoUnit.HOURS.between(startTime, endTime)
        // 计算当前时间和另一个时间之间的分钟数差ChronoUnit.MINUTES.between(startTime, endTime)
        // 计算当前时间和另一个时间之间的相差的周数  ChronoUnit.WEEKS.between(startTime, endTime)
        // 计算当前时间和另一个时间之间的相差的月数  ChronoUnit.MONTHS.between(startTime, endTime)
        // ..............
        // 输出时间差
        System.out.println("当前时间与另一个时间之间的天数差:" + daysDiff); 












// 需求:在客户关系管理系统中,判断客户最近一次联系时间是否超过3个月,超过则提醒公司员工需要和客户联系感情
        LocalDateTime lastContactTime = LocalDateTime.of(2023, 4, 1, 10, 0, 0);
        LocalDateTime now = LocalDateTime.now();

        long monthsDiff = ChronoUnit.MONTHS.between(lastContactTime, now);

        if (monthsDiff >= 3) {
            System.out.println("客户最近一次联系时间已超过3个月");
        } else {
            System.out.println("客户最近一次联系时间在3个月内");


        }






// 获取当前日期时间
LocalDateTime now = LocalDateTime.now();
// 获取年份
int year = now.getYear();
// 获取月份
int month = now.getMonthValue();
// 获取日
int day = now.getDayOfMonth();
// 获取周几(1-7,1 表示周一,7 表示周日)
int dayOfWeek = now.getDayOfWeek().getValue();

// 获取日期时间的字符串表示
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);

// 输出结果
System.out.println("年 " + year);
System.out.println("月 " + month);
System.out.println("日 " + day);
System.out.println("周 " + dayOfWeek);
System.out.println("目前时间为" + formattedDateTime);



// 假设员工 生日 为 3月17
        LocalDateTime birthdayTime = LocalDateTime.of(1900,3,7,00,00,00);
        // 获取当前日期时间
        LocalDateTime now = LocalDateTime.now();

        if(birthdayTime.getMonthValue()==now.getMonthValue() && birthdayTime.getDayOfMonth() == now.getDayOfMonth()){
            System.out.println("要给社畜要生日补贴了");
        }





//判断某个时间是否在指定的时间范围内
// 获取当前时间
        LocalDateTime now = LocalDateTime.now();

        // 指定时间范围(2023年7月1日至2023年7月31日)
        LocalDateTime startDate = LocalDateTime.of(2023, 7, 1, 0, 0, 0);
        LocalDateTime endDate = LocalDateTime.of(2023, 7, 8, 23, 59, 59);

        // 判断当前时间是否在指定时间范围内
        // isAfter方法  表示时间在XX时间之后         isBefore方法 表示 时间 在XX时间之前
        // isAfter方法 和 isBefore方法 结果都是布尔类型
        boolean isWithinRange = now.isAfter(startDate) && now.isBefore(endDate);

        // 输出判断结果
        System.out.println("当前时间是否在指定时间范围内:" + isWithinRange);




//订单支付倒计时
// 下订单后,有15分钟时效性,在15分钟内未支付,订单自动取消
        int countdownMinutes = 15;
        // 指定下订单的时间
        LocalDateTime orderDate = LocalDateTime.of(2023, 7, 7, 8, 7, 0);
        // plus方法用于在当前日期时间上添加一定的时间量,得到一个新的日期时间
        // plus方法传两个参数:时间量和时间单位。
        // 时间量可以是任意整数值
        // 时间单位可以是 ChronoUnit 枚举类中定义的单位,如 ChronoUnit.DAYS、ChronoUnit.HOURS 、 ChronoUnit.MINUTES、ChronoUnit.SECONDS等等。
        LocalDateTime paymentDeadline = orderDate.plus(countdownMinutes, ChronoUnit.MINUTES);
        // 获取当前时间
        LocalDateTime currentTime = LocalDateTime.now();

        if(currentTime.isAfter(paymentDeadline)){
            System.out.println("订单已自动取消");
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值