1:工具类——本例的核心,其中有两点注意的地方,一是使用了严格转换方式,二是将转换成的日期又转换成字符串和原字符串进行了二次比较
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @date 2017-05-10 上午 09:08:00 * @since: JDK 1.7 * @Version: V1.0 */ public class DateUtil { /** * 声明一个日志记录器 */ private static final Logger LOGGER = LoggerFactory.getLogger(DateUtil.class); /** * 判断是否是对应的格式的日期字符串 * @param dateStr * @param datePattern * @return */ public static boolean isRightDateStr(String dateStr,String datePattern){ DateFormat dateFormat = new SimpleDateFormat(datePattern); try { //采用严格的解析方式,防止类似 “2017-05-35” 类型的字符串通过 dateFormat.setLenient(false); dateFormat.parse(dateStr); Date date = (Date)dateFormat.parse(dateStr); //重复比对一下,防止类似 “2017-5-15” 类型的字符串通过 String newDateStr = dateFormat.format(date); if(dateStr.equals(newDateStr)){ return true; }else { LOGGER.error("字符串dateStr:{}, 不是严格的 datePattern:{} 格式的字符串",dateStr,datePattern); return false; } } catch (ParseException e) { LOGGER.error("字符串dateStr:{},不能按照 datePattern:{} 样式转换",dateStr,datePattern); return false; } } }
2:简单的测试类
public class TestMain { public static void main(String[]args){ System.out.println(DateUtil.isRightDateStr("2017-05-15","yyyy-MM-dd")); System.out.println(DateUtil.isRightDateStr("2017-5-15","yyyy-MM-dd")); System.out.println(DateUtil.isRightDateStr("2017-01-88","yyyy-MM-dd")); System.out.println(DateUtil.isRightDateStr("2017-21-88","yyyy-MM-dd")); System.out.println(DateUtil.isRightDateStr("21:88","HH:mm")); System.out.println(DateUtil.isRightDateStr("01:10","HH:mm")); System.out.println(DateUtil.isRightDateStr("25:00","HH:mm")); } }
鉴于水平有限难保不会出现错漏之处,如果你觉得那里有错误,请点击一下“反对”按钮,并希望您提出宝贵的修改意见,您的宝贵意见将是我们进步的一大源泉!
如果您觉得阅读上文对您有所帮助,请轻点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!