Determine if a String is a valid date before parsing

后端 未结 12 1714
半阙折子戏
半阙折子戏 2020-12-03 11:36

I have this situation where I am reading about 130K records containing dates stored as String fields. Some records contain blanks (nulls), some contain strings like this: \'

12条回答
  •  天涯浪人
    2020-12-03 12:17

    A simple utility class I have written for my project. Hope this helps someone.

    Usage examples:

    DateUtils.multiParse("1-12-12");
    DateUtils.multiParse("2-24-2012");
    DateUtils.multiParse("3/5/2012");
    DateUtils.multiParse("2/16/12");
    
    
    
    
    public class DateUtils {
    
        private static List dateFormats = new ArrayList();
    
    
    
        private Utils() {
            dateFormats.add(new SimpleDateFormat("MM/dd/yy")); // must precede yyyy
            dateFormats.add(new SimpleDateFormat("MM/dd/yyyy"));
            dateFormats.add(new SimpleDateFormat("MM-dd-yy"));
            dateFormats.add(new SimpleDateFormat("MM-dd-yyyy"));            
    
        }
            private static Date tryToParse(String input, SimpleDateFormat format) {
            Date date  = null;
            try {
                date = format.parse(input);
            } catch (ParseException e) {
    
            }
    
            return date;
        }
    
            public static Date multiParse(String input)  {
            Date date = null;
            for (SimpleDateFormat format : dateFormats) {
                date = tryToParse(input, format);
                if (date != null) break;
            }
            return date;
        }
    }
    

提交回复
热议问题