美文网首页
对日期处理相关工具类

对日期处理相关工具类

作者: shawnleng | 来源:发表于2019-10-12 16:27 被阅读0次

    日期相关处理工具

    1.获取当前日期字符串

    如:2019-10-12

        public static String getCurrentDateStr() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date d = new Date();
            String nowStr = sdf.format(d);
            return nowStr;
        }
    

    2.获取从今天算起的30天内的日期集合

    如:2019-10-12、2019-10-13、2019-10-14、...2019-11-11

        public static List<String> getDateInfoList() {
            SimpleDateFormat YEAR = new SimpleDateFormat("yyyy-MM-dd");
            ArrayList<String> dateInfos = new ArrayList<>();
            Calendar calendar = Calendar.getInstance();
             String year = YEAR.format(calendar.getTime());
    
            for (int i = 0; i < column; i++) {
                String year = YEAR.format(calendar.getTime());
                dateInfos.add(year);
                calendar.add(Calendar.DAY_OF_MONTH, 1);
            }
            return dateInfos;
        }
    

    3.获取从前一天算起的30天内的日期集合

    如:2019-10-11、2019-10-12、2019-10-13、2019-10-14、...2019-11-11 以此类推可向前推可向后加

         public static List<String> getDateInfoList() {
            ArrayList<String> dateInfos = new ArrayList<>();
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);
    
            for (int i = 0; i < column; i++) {
                String year = YEAR.format(calendar.getTime());
                dateInfos.add(year);
                calendar.add(Calendar.DAY_OF_MONTH, 1);
            }
            return dateInfos;
        }
    

    4.判断某一个时间是否在一个时间段内

    如:10:00 是否在10:00-20:00这个时间段范围内

     /**
         * 判断某一时间是否在一个区间内
         *
         * @param sourceTime 时间区间,半闭合,如[10:00-20:00)
         * @param curTime    需要判断的时间 如10:00
         * @return
         * @throws IllegalArgumentException
         */
        public static boolean isInTime(String sourceTime, String curTime) {
            if (sourceTime == null || !sourceTime.contains("-") || !sourceTime.contains(":")) {
                throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
            }
            if (curTime == null || !curTime.contains(":")) {
                throw new IllegalArgumentException("Illegal Argument arg:" + curTime);
            }
            String[] args = sourceTime.split("-");
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
            try {
                long now = sdf.parse(curTime).getTime();
                long start = sdf.parse(args[0]).getTime();
                long end = sdf.parse(args[1]).getTime();
                if (args[1].equals("00:00")) {
                    args[1] = "24:00";
                }
                if (end < start) {
                    if (now >= end && now < start) {
                        return false;
                    } else {
                        return true;
                    }
                } else {
                    if (now >= start && now < end) {
                        return true;
                    } else {
                        return false;
                    }
                }
            } catch (ParseException e) {
                e.printStackTrace();
                throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
            }
        }
    

    5.将某一个时间往后增加一天

    如:今天2019-10-12,返回2019-10-13时间字符串

        public static String getAfterDate(String dateGiven) throws Exception {
            Date date = formatter.parse(dateGiven);
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            calendar.add(calendar.DATE, -1);//把日期往后增加一天.整数往后推,负数往前移动
            date = calendar.getTime(); //这个时间就是日期往后推一天的结果 
            String dateString = formatter.format(date);
            return dateString;
        }
    

    6.日期字符串转为毫秒值

    如:2019-10-12返回456478964

        public static long dateToTimestamp(String time) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try {
                Date date = simpleDateFormat.parse(time);
                long ts = date.getTime() / 1000;
                return ts;
            } catch (ParseException e) {
                return 0;
            }
        }
    

    7.毫秒值转日期

    如:456478964返回2019-10-12

     public static String timestampToDate(long time) {
            if (time < 10000000000L) {
                time = time * 1000;
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String sd = sdf.format(new Date(Long.parseLong(String.valueOf(time))));
            return sd;
        }
    
    

    8.传入两个时间字符串得到时间字符串集合

    如:传入2019-10-12,2019-10-16
    返回:2019-10-12、2019-10-13、2019-10-14、2019-10-15、2019-10-16

        public static List<String> addDates(String cntDateBeg, String cntDateEnd) {
            List<String> list = new ArrayList<>();
            //拆分成数组
            String[] dateBegs = cntDateBeg.split("-");
            String[] dateEnds = cntDateEnd.split("-");
            //开始时间转换成时间戳
            Calendar start = Calendar.getInstance();
            start.set(Integer.valueOf(dateBegs[0]), Integer.valueOf(dateBegs[1]) - 1, Integer.valueOf(dateBegs[2]));
            Long startTIme = start.getTimeInMillis();
            //结束时间转换成时间戳
            Calendar end = Calendar.getInstance();
            end.set(Integer.valueOf(dateEnds[0]), Integer.valueOf(dateEnds[1]) - 1, Integer.valueOf(dateEnds[2]));
            Long endTime = end.getTimeInMillis();
            //定义一个一天的时间戳时长
            Long oneDay = 1000 * 60 * 60 * 24l;
            Long time = startTIme;
            //循环得出
            while (time <= endTime) {
                list.add(new SimpleDateFormat("yyyy-MM-dd").format(new Date(time)));
                time += oneDay;
            }
            return list;
        }
    

    9.比较日期字符串大小,按日期大小顺序排列

    如:传参2019-10-12、2019-10-11,、2019-10-15集合
    返回:2019-10-11、2019-10-12、2019-10-15

        private List<String> compareDates(List<String> datelists) {
            Collections.sort(datelists, new Comparator<String>() {
                @Override
                public int compare(String h1, String h2) {
                    return h1.compareTo(h2);
                }
            });
            return datelists;
        }
    

    10. 判断某一个日期是否大于当前日期

    例如:比较两个日期大小2019-7-20 12:12:12 和2019-7-20 10:10:10大小

       /**
         * @param dateStr 结果返回是1 预订入住日期大于当前日期
         * @return
         */
        public static int compareDate(String dateStr) {
            Date currentTime = new Date();
    //改变输出格式(自己想要的格式)
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //得到字符串时间
            String s8 = df.format(currentTime);
            try {
                Date dt1 = df.parse(dateStr);
                Date dt2 = df.parse(s8);
                if (dt1.getTime() > dt2.getTime()) {
                    System.out.println("dt1 在dt2前");
                    System.out.println("dt1在dt2后");
                    return 1;
                }
    
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            return 0;
    
    
        }
    

    注意事项

    在格式化时间字符串时候
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");中如果"yyyy-MM-dd"替换成"YYYY-MM-dd"在android5.0的部分机型会报错
    
    

    相关文章

      网友评论

          本文标题:对日期处理相关工具类

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