判断日期范围及时间段 - 实战

一、日期范围判断

说明:包含两个端点值,即日期范围的闭区间。

举例:判断日期【2021-03-22】是否在日期范围【2021-03-22,2021-03-30】闭区间内

public static boolean validDate(String paramDateStr, String dateRange) {
    String[] dateRangeArr = dateRange.split(",");
    LocalDate paramDate = null, startDate = null, endDate = null;
    try {
        paramDate = LocalDate.parse(paramDateStr);
        startDate = LocalDate.parse(dateRangeArr[0]);
        endDate = LocalDate.parse(dateRangeArr[1]);
    } catch (DateTimeParseException e) {
        System.out.println("日期格式化异常");
        return false;
    }

    // 不在日期范围闭区间内
    return paramDate.compareTo(startDate) >= 0 && paramDate.compareTo(endDate) <= 0;
}

public static void main(String[] args) {
    String paramDateStr = "2021-03-22";
    String dateRange = "2021-03-22,2021-03-30";
    System.out.println(validDate(paramDateStr, dateRange));
}

运行输出:true

二、时间段判断

说明:包含每个时间段的端点值,即每个时间段范围的闭区间。

举例:判断时间点【11:35】是否在时间段【11:30-12:00,14:20-16:40,18:10-20:25】内

public static boolean validTime(String paramTimeStr, String timeRange) {
    LocalTime paramTime = null;
    try {
        paramTime = LocalTime.parse(paramTimeStr);
    } catch (IllegalArgumentException e) {
        System.out.println("时间格式化异常");
        return false;
    }

    String[] timeRangeArr = timeRange.split(",");
    for (String rTime : timeRangeArr) {
        LocalTime startTime = null, endTime = null;
        String[] rTimeArr = rTime.split("-");
        try {
            startTime = LocalTime.parse(rTimeArr[0]);
            endTime = LocalTime.parse(rTimeArr[1]);
        } catch (IllegalArgumentException e) {
            System.out.println("时间格式化异常");
            return false;
        }
        if (paramTime.compareTo(startTime) > -1 && paramTime.compareTo(endTime) < 1) {
            // 有一个时间段符合,则通过
            return true;
        }
    }
    // 不在任何时间段内
    return false;
}

public static void main(String[] args) {
    String paramTimeStr = "11:35";
    String timeRange = "11:30-12:00,14:20-16:40,18:10-20:25";
    System.out.println(validTime(paramTimeStr, timeRange));
}

运行输出:true

三、是否为工作日

public static boolean isWorkday(String paramDateStr) {
    LocalDate paramDate = null;
    try {
        paramDate = LocalDate.parse(paramDateStr);
    } catch (DateTimeParseException e) {
        System.out.println("日期格式化异常");
        return false;
    }
    int week = paramDate.getDayOfWeek().getValue();
    return week <= 5;
}

public static void main(String[] args) {
    String paramDateStr = "2021-03-21";
    System.out.println(isWorkday(paramDateStr));
}

运行输出:false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠子仁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值