【dateFormatSymbols】JAVA特殊日期格式转换

记录:特殊日期格式转换,如将yyyyMMdd转为01MAY2019

    public static final String DATE_VIP_FORMAT = "yyyyMMdd";

    public static String format(Date targetDate, String formatStr){
                if (targetDate == null || StringUtils.isBlank(formatStr)){
                        return null;
                }
                SimpleDateFormat format = new SimpleDateFormat(formatStr);
                return format.format(targetDate);
        }

        public static Date parse(String date, String pattern){
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
                try {
                        return simpleDateFormat.parse(date);
                } catch (ParseException e) {
                        //blocker解决
                        logger.error("parse date error for input String {}",date);
                }
                return null;
        }

        public static String formatVipDateStr(Date date) {
                return format(date, DATE_VIP_FORMAT);

        }
        public static Date parseVipDateStr(String date) {
                return parse(date, DATE_VIP_FORMAT);

        }

        /**
         * 将01MAY2019 转换为yyyyMMdd
         */
        public static String  getVipStr(String date){
                try {
                        SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMMyyyy", Locale.ENGLISH);
                        DateFormatSymbols dateFormatSymbols = new DateFormatSymbols();
                        dateFormatSymbols.setShortMonths(new String[]{"JAN", "FEB", "MAR"
                                , "APR", "MAY", "JUN"
                                , "JUL", "AUG", "SEP"
                                , "OCT", "NOV", "DEC"});
                        dateFormat.setDateFormatSymbols(dateFormatSymbols);


                        Date parse = dateFormat.parse(date);
                        return formatVipDateStr(parse);
                } catch (ParseException e) {
                        logger.error("parse VIP date error for input String {}",date);
                }
                return null;
        }
        /**
         * 将yyyyMMdd转为01MAY2019
         */
        public static String  getVipFmt(String dateStr){
                try {

                        //获取date对象
                        Date date = parseVipDateStr(dateStr);


                        SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMMyyyy", Locale.ENGLISH);
                        DateFormatSymbols dateFormatSymbols = new DateFormatSymbols();
                        dateFormatSymbols.setShortMonths(new String[]{"JAN", "FEB", "MAR"
                                , "APR", "MAY", "JUN"
                                , "JUL", "AUG", "SEP"
                                , "OCT", "NOV", "DEC"});
                        dateFormat.setDateFormatSymbols(dateFormatSymbols);
                        String format = dateFormat.format(date);
                        return format;
                } catch (Exception e) {
                        logger.error("parse VIP date error for input String {}",dateStr);
                }
                return null;
        }
        public static void main(String[] args) {
                String vipStr = getVipFmt("20190503");
                System.out.println(vipStr);
        }