zoukankan      html  css  js  c++  java
  • Java--处理时间例子

    package ins.platform.utils;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    
    public class TimeUtil {
        private static Logger logger = Logger.getLogger(TimeUtil.class);
        private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";//3
        private static final String DATE_FORMAT_DATE = "yyyyMMdd";//12
        private static final String DATE_FORMAT2 = "yyyyMMddHHmmss";//这个方法不要放入dateFormats 他会处理类似于2019-04-04 00格式数据,并处理的时间不对
        private static final String DATE_FORMAT3 = "yyyy-MM-dd HH:mm:ss.SSS z";//1
        private static final String DATE_FORMAT4 = "yyyyMMdd HHmmss";//4
        private static final String DATE_FORMAT5 = "yyyy-MM-dd HHmmss";//5
        private static final String DATE_FORMAT7 = "yyyy-MM-dd HH-mm-ss";//6
        private static final String DATE_FORMAT8 = "yyyy-MM-dd HH:mm";//8
        private static final String DATE_FORMAT9 = "yyyy-MM-dd HH-mm";//9
        private static final String DATE_FORMAT10 = "yyyy-MM-dd HHmm";//7
        private static final String DATE_FORMAT11 = "yyyy-MM-dd HH";//10
        private static final String DATE_FORMAT12 = "yyyy-MM";//13
        private static final String DATE_FORMAT_MILLISECOND = "yyyy-MM-dd HH:mm:ss.SSS";//2
        private static final String DATE_YEAR = "yyyy";//15
        private static final String DATE_MONTH = "MM";//16
        private static final String DATE_DAY = "dd";//17
        private static final String DATE_TIME = "HH:mm:ss";//14
        private static final String DATE_DATE = "yyyy-MM-dd";//11
        private static final String DATE_DATE_D = "yyyyMMdd";
        
        
        static List<DateFormat> dateFormats = null;
        static {
            dateFormats = new ArrayList<>();
            //按照时间格式从复杂维度到简单维度放入 --如果有特殊格式,只需要添加就可以了
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT3));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT_MILLISECOND));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT4));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT5));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT7));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT10));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT8));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT9));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT11));
            dateFormats.add(new SimpleDateFormat(DATE_DATE));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT_MILLISECOND));
            dateFormats.add(new SimpleDateFormat(DATE_FORMAT12));
            dateFormats.add(new SimpleDateFormat(DATE_TIME));
            dateFormats.add(new SimpleDateFormat(DATE_YEAR));
            dateFormats.add(new SimpleDateFormat(DATE_MONTH));
            dateFormats.add(new SimpleDateFormat(DATE_DAY));
        }
        
        //字符串转日期格式
        public static Date formatStr(String dateStr) {
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_MILLISECOND);
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                sdf = new SimpleDateFormat(DATE_FORMAT);
                try {
                    date = sdf.parse(dateStr);
                } catch (ParseException e1) {
                    sdf = new SimpleDateFormat(DATE_FORMAT8);
                    try {
                        date = sdf.parse(dateStr);
                    } catch (ParseException e2) {
                        sdf = new SimpleDateFormat(DATE_FORMAT11);
                        try {
                            date = sdf.parse(dateStr);
                        } catch (ParseException e3) {
                            sdf = new SimpleDateFormat(DATE_DATE);
                            try {
                                date = sdf.parse(dateStr);
                            } catch (ParseException e4) {
                                logger.error("日期转换异常",e4);
                            }
                        }
                    }
                }
            }
            return date;
        }
        
        public enum TimeEnum {
            // yyyy-MM-dd HH:mm:ss
            YEAR("yyyy", "年份"), MM("yyyy-MM", "年月"), dd("yyyy-MM-dd", "年月日"), HH(
                    "yyyy-MM-dd HH", "年月日 时"), mm("yyyy-MM-dd HH:mm", "年月日 时分"),ss("yyyy-MM-dd HH:mm:ss", "年月日 时分秒");
    
            private String code;
    
            private String name;
    
            TimeEnum(String code,String name) {
    
                this.name = name;
    
                this.code = code;
    
            }
            public String getName() {
                return name;
            }
    
            public String getCode() {
                return code;
            }
    
        }
        
        /**
         * 
         * @param dateStr 需要转换的时间字符串
         * @param timeEnum 时间格式的枚举
         * @return
         * @throws ParseException
         */
        public static Date formatStrToDate(String dateStr,TimeEnum timeEnum) throws ParseException {
            Date date = null;
            if(dateStr == null || "".equals(dateStr) || "".equals(dateStr.trim())){
                return null;
            }
            if(timeEnum !=null){
                //按照定制的初始化
                SimpleDateFormat sdf = new SimpleDateFormat(timeEnum.code);
                date = sdf.parse(dateStr);
            }else{
                String[] dateArr = dateStr.split(" ");
                if(dateArr == null){
                    return null;
                }
                String pattern = "";
                if(dateArr.length == 1){
                    //yyyy-MM-dd
                    String str = dateArr[0];
                    if(str.length() == 4){
                        pattern = TimeEnum.YEAR.code;
                    }
                    if(str.length() == 7){
                        pattern = TimeEnum.MM.code;
                    }
                    if(str.length() == 10){
                        pattern = TimeEnum.dd.code;
                    }
                }else if(dateArr.length == 2){
                    //yyyy-MM-dd 
                    //HH:mm:ss
                    String str = dateArr[1];
                    if(str.length() == 2){
                        pattern = TimeEnum.HH.code;
                    }
                    if(str.length() == 5){
                        pattern = TimeEnum.mm.code;
                    }
                    if(str.length() == 8){
                        pattern = TimeEnum.ss.code;
                    }
                }
                if(!"".equals(pattern)){
                    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
                    date = sdf.parse(dateStr);
                }
            }
            return date;
        }
    }
  • 相关阅读:
    强大的Excel文件的导入导出类
    按某一字段分组取最大(小)值所在行的数据
    oracle 数据库创建脚本
    六十四卦的名称
    DirectX与OpenGL方面的经典电子书下载
    替换word文件内容
    asp.net里导出excel表方法汇总
    全角半角处理
    JavaScript正则表达式
    Asp.net config connectionString配置(转)
  • 原文地址:https://www.cnblogs.com/llq1214/p/11301809.html
Copyright © 2011-2022 走看看