ksino's diary

覚えたことを忘れないように、小さなことでも書いていく。

SimpleDateFormatを使って、文字列が日付として正しいかチェックする

    public static void main(String[] args) {
        System.out.println(checkDate("20150823"));      // true
        System.out.println(checkDate("20150831"));      // true
        System.out.println(checkDate("20150832"));      // false
        System.out.println(checkDate("a20150823"));     // false
        System.out.println(checkDate("20150a23"));      // false
        System.out.println(checkDate("2015082a"));      // false
        System.out.println(checkDate("20150823a"));     // false
        System.out.println(checkDate("2015-08-23"));    // false
    }
    
    public static boolean checkDate(String s1) {
        if (s1 == null || s1.isEmpty()) {
            return false;
        }
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        format.setLenient(false);
        Date date = null;
        try {
            date = format.parse(s1);
        } catch (ParseException ex) {
            return false;
        }
        String s2 = format.format(date);
        return s1.equals(s2);
    }