美文网首页
java时间帮助类(计算时间差)

java时间帮助类(计算时间差)

作者: 根艮哏艮根 | 来源:发表于2018-11-09 17:14 被阅读0次
    public class DateUtils {
    
        /**
         * 两个时间之差
         * @param startDate
         * @param endDate
         * @return 分钟
         */
        public static Integer getBetweenMinutes(Date startDate, Date endDate) {
            Integer minutes = 0;
            try {
                if(startDate!=null&&endDate!=null) {
                    long ss = 0;
                    if(startDate.before(endDate)) {
                        ss = endDate.getTime() - startDate.getTime();
                    }else {
                        ss = startDate.getTime() - endDate.getTime();
                    }
                    minutes = Integer.valueOf((int) (ss/(60*1000))) ;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return minutes;
        }
        /**
         * 两个时间只差
         * @param startDate
         * @param endDate
         * @return 分钟
         */
        public static Integer getBetweenMinutes(String a, String b) {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date startDate;
            Date endDate;
            try {
                startDate = format.parse(a);
                endDate = format.parse(b);
                try {
                    long ss = 0;
                    if(startDate.before(endDate)) {
                        ss = endDate.getTime() - startDate.getTime();
                    }else {
                        ss = startDate.getTime() - endDate.getTime();
                    }
                    return Integer.valueOf((int) (ss/(60*1000))) ;
                } catch (Exception e) {
                    e.printStackTrace();
                    return 0;
                }
            } catch (ParseException e1) {
                e1.printStackTrace();
                return 0;
            }
        }
        /**
         * 两个时间只差
         * @param startDate
         * @param endDate
         * @return 秒数
         */
        public static Integer getBetweenSecond(Date startDate, Date endDate) {
            Integer seconds = 0;
            try {
                if(startDate!=null&&endDate!=null) {
                    long ss = 0;
                    if(startDate.before(endDate)) {
                        ss = endDate.getTime() - startDate.getTime();
                    }else {
                        ss = startDate.getTime() - endDate.getTime();
                    }
                    seconds = Integer.valueOf((int) (ss/(1000))) ;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return seconds;
        }
        
        /**
         * 两个时间只差
         * @param startDate
         * @param endDate
         * @return 秒数
         */
        public static Integer getBetweenSecond(String a, String b) {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date startDate;
            Date endDate;
            try {
                startDate = format.parse(a);
                endDate = format.parse(b);
                try {
                    long ss = 0;
                    if(startDate.before(endDate)) {
                        ss = endDate.getTime() - startDate.getTime();
                    }else {
                        ss = startDate.getTime() - endDate.getTime();
                    }
                    return Integer.valueOf((int) (ss/(1000))) ;
                } catch (Exception e) {
                    e.printStackTrace();
                    return 0;
                }
            } catch (ParseException e1) {
                e1.printStackTrace();
                return 0;
            }
        }
        public static String getDatFormat(Date date, String dateFormat) {
            try {
                SimpleDateFormat format = new SimpleDateFormat(dateFormat);
                return format.format(date);
            } catch (Exception e) {
                e.printStackTrace();
                SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-DD");
                return format.format(new Date());
            }
        }
        
        /**
         * 获取两个时间之间的日期、月份、年份
         * @param beginDate
         * @param endDate
         * @param type{1:日期,2:月份,其他:年份}
         * @return
         */
        public static List<String> getBetweenDates(String startDate, String endDate, Integer type) {
            SimpleDateFormat format= null; 
            Date begin = null;
            Date end = null;
            Integer obj = null;
            Integer flag = null;
            if(type!=null&&type==1){
                format = new SimpleDateFormat("yyyy-MM-dd");
                obj = Calendar.DAY_OF_YEAR;
                flag = 9;
            }else if(type!=null&&type==2){
                format = new SimpleDateFormat("yyyy-MM"); 
                obj = Calendar.MONTH;
                flag = 11;
            }else{
                format = new SimpleDateFormat("yyyy");
                obj = Calendar.YEAR;
                flag = 9;
            }
            if(StringUtils.isNotEmpty(startDate)&&StringUtils.isNotEmpty(endDate)){
                try {
                    begin = format.parse(startDate);
                    end = format.parse(endDate);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }else{
                end = new Date();
                begin = getDateBefore(end,flag,obj);
            }
            
            List<String> result = new ArrayList<String>();
            Calendar tempStart = Calendar.getInstance();
            tempStart.setTime(begin);
            while (begin.getTime() <= end.getTime()) {
                result.add(format.format(tempStart.getTime()));
                tempStart.add(obj, 1);
                begin = tempStart.getTime();
            }
            return result;
        }
        /**
         * 获取两个时间之间的日期、月份、年份
         * @param date{YYYY-MM-DD-YYYY-MM-DD}
         * @param type{1:日期,2:月份,其他:年份}
         * @return
         */
        public static List<String> getBetweenDates(String date,Integer type) {
            SimpleDateFormat format= null; 
            Date begin = null;
            Date end = null;
            Integer obj = null;
            String startDate = null;
            String endDate = null;
            Integer flag = null;
            if(type!=null&&type==1){
                format = new SimpleDateFormat("yyyy-MM-dd");
                obj = Calendar.DAY_OF_YEAR;
                flag = 9;
            }else if(type!=null&&type==2){
                format = new SimpleDateFormat("yyyy-MM"); 
                obj = Calendar.MONTH;
                flag = 11;
            }else{
                format = new SimpleDateFormat("yyyy");
                obj = Calendar.YEAR;
                flag = 9;
            }
            if(StringUtils.isNotEmpty(date)){
                startDate = date.substring(0, 10);
                endDate = date.substring(date.length()-10, date.length());
                try {
                    begin = format.parse(startDate);
                    end = format.parse(endDate);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }else{
                end = new Date();
                begin = getDateBefore(end,flag,obj);
            }
            
            List<String> result = new ArrayList<String>();
            Calendar tempStart = Calendar.getInstance();
            tempStart.setTime(begin);
            while (begin.getTime() <= end.getTime()) {
                result.add(format.format(tempStart.getTime()));
                tempStart.add(obj, 1);
                begin = tempStart.getTime();
            }
            return result;
        }
        
        /**
         * 拆分时间间隔
         * Title: getDateArray
         * Description: '2018-04-04 - 2018-05-22'
         * @author guojx  
         * @date 2018年4月13日
         */
        public static String[] getDateArray(String date) {
            String[] defalut = {"",""};
            try {
                if(StringUtils.isNotEmpty(date)) {
                    String startDate = date.substring(0, 10);
                    String endDate = date.substring(date.length()-10, date.length());
                    String[] dates = {startDate,endDate};
                    return dates;
                }else {
                    return defalut;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return defalut;
            }
        }
    
        public static Date getDateBefore(Date d, int day,Integer type) {
            Calendar now = Calendar.getInstance();
            now.setTime(d);
            now.set(type, now.get(type) - day);
            return now.getTime();
        }
        
        /**
         * 获取给定日期之前或之后的日期
         * @param date 
         * @param type
         * @param num
         * @return
         */
        public static String getPreviouslyDate(Date date, String type, Integer num) {
            
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String resultDate = "";
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            try {
                switch (type) {
                case "day":
                    c.add(Calendar.DATE, num);
                    break;
                case "month":
                    c.add(Calendar.MONTH, num);
                    break;
                case "year":
                    c.add(Calendar.YEAR, num);
                    break;
                default:
                    c.add(Calendar.DATE, 0);
                    break;
                }   
                Date d = c.getTime();
                resultDate = format.format(d);
                return resultDate;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        /**
         *******************************************
         * 方法名称:判断日期是否是某一天   
         * 创建人:guojx
         * 创建时间:2018年4月19日 下午9:44:57
         * @param date
         * @param num
         * @return
         * @return:boolean
         *******************************************
         */
        public static boolean isOneday(Date date, Integer num){
            SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
            String dateStr = fmt.format(date).toString();
            Calendar calendar = Calendar.getInstance();  
            calendar.setTime(new Date());  
            calendar.add(Calendar.DAY_OF_MONTH, num);  
            String oneDateStr = fmt.format(calendar.getTime()).toString();
            if(dateStr.equals(oneDateStr)){//格式化为相同格式
                return true;
            }else {
                return false;
            }
        }
        public static void main(String[] args){
    //      System.out.println(DateUtils.getPreviouslyDate(new Date(), "day", -1));
    //      String[] dates = getDateArray("2018-04-04 - 2018-05-22");
    //      for (int i = 0; i < dates.length; i++) {
    //          System.out.println(dates[i].toString());
    //      }
    //      System.out.println(getBetweenDates("2018-04-11","2018-04-11",1));
    //      System.out.println(DateUtils.getPreviouslyDate(new Date(), "day", 0));
            System.out.println(DateUtils.getPreviouslyDate(new Date(),"month",-7));
            /*System.out.println(getBetweenSecond("2017-11-14 21:30:46","2017-11-14 21:33:46"));*/
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java时间帮助类(计算时间差)

          本文链接:https://www.haomeiwen.com/subject/dlboxqtx.html