java中验证日期格式

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class DateTimeCheck {
/**
* 验证日期时间格式

* @param args
*/
public static void main(String[] args) {
String checkValue = "2008-09-11 14:17:11";
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date d = null;
if (checkValue != null && !checkValue.equals("")) {
if (checkValue.split("/").length > 1) {
dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
}
if (checkValue.split("-").length > 1) {
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
} else {
return;
}
try {
d = dateFormat.parse(checkValue);
System.out.println(d);
} catch (Exception e) {
System.out.println("格式错误");
return;

}


String eL = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-9]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";
Pattern p = Pattern.compile(eL);
Matcher m = p.matcher(checkValue);
boolean b = m.matches();
if (b) {
System.out.println("格式正确");
} else {
System.out.println("格式错误");
}


}
}
Java 中,验证时间格式的常见方法有以下四种: ### 1. 使用 `SimpleDateFormat` 进行解析 通过 `SimpleDateFormat` 类可以定义一个特定的时间格式,并尝试将字符串解析为日期对象。如果解析失败,则说明格式不正确。由于 `SimpleDateFormat` 是非线程安全的,每次使用时都应创建新的实例。 ```java SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { formatter.parse("2023-10-15 12:30:45"); } catch (ParseException e) { // 格式错误处理逻辑 } ``` 此方法适用于简单的日期校验场景[^3]。 ### 2. 使用 `DateTimeFormatter`(JDK 8 及以上) `DateTimeFormatter` 是 JDK 8 引入的一个线程安全类,用于格式化和解析日期时间。它结合 `LocalTime` 或 `LocalDateTime` 可以实现更灵活、更强大的时间格式校验。 ```java DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); try { LocalTime.parse("12:30:45", formatter); } catch (DateTimeParseException e) { // 格式错误处理逻辑 } ``` 相比 `SimpleDateFormat`,`DateTimeFormatter` 提供了更好的线程安全性和更直观的 API 设计[^1]。 ### 3. 使用正则表达式进行匹配 通过正则表达式可以直接对字符串进行模式匹配,从而判断其是否符合预期的时间格式。例如,验证 `HH:mm:ss` 格式的时间可以使用如下正则: ```java String time = "23:59:59"; String regex = "^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"; if (!time.matches(regex)) { // 格式错误处理逻辑 } ``` 这种方式适合对输入格式有严格控制的需求,但需要注意正则表达式的复杂度和可维护性[^4]。 ### 4. 使用第三方库(如 Apache Commons Validator) Apache Commons Validator 提供了封装好的日期校验工具类 `DateValidator`,其内部仍然基于 `SimpleDateFormat` 实现,但提供了更高层次的抽象接口。 ```java DateValidator validator = DateValidator.getInstance(); if (!validator.isValid("2023-10-15 12:30:45", "yyyy-MM-dd HH:mm:ss")) { // 格式错误处理逻辑 } ``` 该方法简化了开发流程,但也引入了外部依赖,且灵活性略低于直接使用 JDK 自带类[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值