在开发中遇到需要判断某个字符串是否为某种格式(如yyyyMMdd
、yyyy-MM-dd
等)的时间的需求,没有找到已有的一键解决的api,所以自己写了一个
方法本体:
注:方法中的ObjectUtil
和DateUtil
均为hutool中的包
/**
* 判断字符串是否为指定格式的日期时间
*
* @param dateStr 需要检查的日期字符串
* @param dateFormat 指定的日期格式,例如:"yyyyMMdd", "yyyy-MM-dd", "yyyy/MM/dd" 等
* @return 如果字符串是指定格式的日期时间,返回 true;否则返回 false。
*/
public static boolean isValidDateFormat(String dateStr, String dateFormat) {
if (ObjectUtil.isEmpty(dateStr)) {
return false;
}
try {
DateUtil.parse(dateStr, dateFormat); // 将字符串解析为日期对象,如果解析成功,则说明字符串是有效的日期格式;否则说明字符串不是有效的日期格式。
return true;
} catch (Exception e) {
return false;
}
}
测试:
/**
* 测试isValidDateFormat方法
* @param args
*/
public static void main(String[] args) {
String dateStr = "2021-03-44"; // 需要检查的日期字符串
String dateFormat = "yyyy-MM-dd"; // 指定的日期格式
boolean isValidDate = isValidDateFormat(dateStr, dateFormat);
System.out.println("字符串 " + dateStr + " 是否为格式为 '" + dateFormat + "' 的时间:" + isValidDate);
}
结果:
字符串 2021-03-01 是否为格式为 'yyyy-MM-dd' 的时间:true
字符串 2aaaa 是否为格式为 'yyyy-MM-dd' 的时间:false
字符串 20230102 是否为格式为 'yyyyMMdd' 的时间:true
原理:
定义了一个名为 isValidDateFormat
的方法,该方法接受两个参数:dateStr
(需要检查的日期字符串)和 dateFormat
(指定的日期格式)。方法内部使用 ()
方法尝试将字符串解析为日期对象。如果解析成功且日期格式与指定的格式相符,则返回 true
;否则返回 false
。