首页 > 技术文章 > 判断日期字符串是否是对应格式的日期字符串

godtrue 2017-05-17 20:58 原文

 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"));

    }
}

 

推荐阅读