You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中验证hh:mm格式时间有效性的解决方案咨询

验证hh:mm格式时间有效性的解决方案

下面是几种能直接用到你代码里的实用方法,解决带冒号的时间字符串无法直接转整数校验的问题:

方法1:拆分字符串后校验数值

把输入的时间字符串按冒号分割,分别提取小时和分钟转成整数,再检查数值范围是否合法:

import java.util.Scanner;

public class TimeValidator {
    public static void main(String[] args) {
        Scanner timeInput = new Scanner(System.in);

        System.out.println("请输入日出时间 [hh:mm]> ");
        String sunrise = timeInput.next();
        System.out.println("请输入日落时间 [hh:mm]>  ");
        String sunset = timeInput.next();

        // 校验日出时间
        if (isValidTime(sunrise)) {
            System.out.println("日出时间格式合法");
        } else {
            System.out.println("日出时间格式错误,请输入hh:mm格式");
        }

        // 校验日落时间
        if (isValidTime(sunset)) {
            System.out.println("日落时间格式合法");
        } else {
            System.out.println("日落时间格式错误,请输入hh:mm格式");
        }

        timeInput.close();
    }

    // 封装时间校验方法
    private static boolean isValidTime(String timeStr) {
        // 按冒号分割字符串
        String[] timeParts = timeStr.split(":");
        // 先判断是否拆分成了小时、分钟两部分
        if (timeParts.length != 2) {
            return false;
        }

        try {
            int hour = Integer.parseInt(timeParts[0]);
            int minute = Integer.parseInt(timeParts[1]);
            // 校验小时范围0-23,分钟范围0-59
            return hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59;
        } catch (NumberFormatException e) {
            // 转整数失败说明输入不是数字,直接判定非法
            return false;
        }
    }
}

方法2:正则匹配+数值校验

先用正则表达式过滤格式错误的输入,再拆分数值做双重校验,能提前拦截不符合hh:mm格式的字符串:

// 修改校验方法即可,其他代码和方法1一致
private static boolean isValidTime(String timeStr) {
    // 正则规则:小时支持0-9、00-09、10-19、20-23;分钟固定00-59
    String timeRegex = "^([01]?[0-9]|2[0-3]):([0-5][0-9])$";
    if (!timeStr.matches(timeRegex)) {
        return false;
    }

    // 拆分后做数值校验(可选,正则已保证范围,做双重保险更严谨)
    String[] timeParts = timeStr.split(":");
    int hour = Integer.parseInt(timeParts[0]);
    int minute = Integer.parseInt(timeParts[1]);
    return hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59;
}

方法3:用Java时间API直接解析(推荐)

Java 8及以上版本的LocalTime类自带时间解析功能,能直接识别hh:mm格式,解析成功即代表时间合法,代码最简洁:

import java.time.LocalTime;
import java.time.format.DateTimeParseException;
import java.util.Scanner;

public class TimeValidator {
    public static void main(String[] args) {
        Scanner timeInput = new Scanner(System.in);

        System.out.println("请输入日出时间 [hh:mm]> ");
        String sunrise = timeInput.next();
        System.out.println("请输入日落时间 [hh:mm]>  ");
        String sunset = timeInput.next();

        if (isValidTime(sunrise)) {
            System.out.println("日出时间格式合法");
        } else {
            System.out.println("日出时间格式错误,请输入hh:mm格式");
        }

        if (isValidTime(sunset)) {
            System.out.println("日落时间格式合法");
        } else {
            System.out.println("日落时间格式错误,请输入hh:mm格式");
        }

        timeInput.close();
    }

    private static boolean isValidTime(String timeStr) {
        try {
            // 按标准hh:mm格式解析,失败则抛异常
            LocalTime.parse(timeStr);
            return true;
        } catch (DateTimeParseException e) {
            return false;
        }
    }
}

内容的提问来源于stack exchange,提问作者asd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:40:48