時間日期工具類——判斷傳入時間的格式,獲得傳入日期的第二天

1.驗證傳入的字符串是否是yyyy-MM-dd格式,是否是正確的日期

    public static String REGEX = "((19|20)[0-9]{2})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])";
    public static String REGEX1 = "(\\d{4})-(\\d+)-(\\d+).*";

    public static boolean match(String timeStr){
        Pattern pattern = Pattern.compile(REGEX);
        Matcher matcher = pattern.matcher(timeStr);
        if (matcher.matches()) {
            pattern = Pattern.compile(REGEX1);
            matcher = pattern.matcher(timeStr);
            if (matcher.matches()) {
                int y = Integer.valueOf(matcher.group(1));
                int m = Integer.valueOf(matcher.group(2));
                int d = Integer.valueOf(matcher.group(3));
                if (d > 28) {
                    Calendar c = Calendar.getInstance();
                    c.set(y, m-1, 1);
                    int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
                    return (lastDay >= d);
                }
            }
            return true;
        }
        return false;
    }

執行結果:

2.獲得傳入日期的第二天

做開發中遇到查詢條件,傳入的是沒有時間的日期類型,而比較的是yyyy-MM-dd HH:mm:ss類型的有時間的,若截止日期比較的話就會捨去截止日期的那天的數據,所以比較的時候要往後推一天與數據庫中的帶有時間的數據作比較

public static String getNextDay(String dateStr){
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date date ;
    try {
        date = formatter.parse(dateStr);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE,1);//把日期往後增加一天.正整數1往後推一天,-1獲得前一天
        date=calendar.getTime(); //獲得傳入時間的後一天
        return formatter.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
        return null;
    }
}

執行結果(可以結合上面判斷是否是正確的時間格式方法加強驗證效果):

此處沒有驗證傳入的日期是否是正常的日期,若傳入2019-02-29的話,會得到2019-03-02,所以,加強規範與邏輯,最好加上上面的時期匹配驗證

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章